ข้อสอบท้ายค่าย 1 ศูนย์ สอวน.กรุงเทพมหานคร ปี 2567 ข้อที่ 1
Problem
สรุปโจทย์
เรามี String ที่ประกอบด้วยตัวอักษรภาษาอังกฤษ 1 String แล้วเราต้องการหาตัวอักษรแต่ละตัวใน String นั้น เรียงจากตัวพิมพ์ใหญ่ก่อนตัวพิมพ์เล็ก แล้วเรียงตามลำดับพจนานุกรม
สิ่งที่ต้องทำ
เขียนโค้ดเพื่อเรียงลำดับ String ตามเงื่อนไขของโจทย์
ตัวอย่าง
Input | Output |
---|---|
ILOVECOMPUTERJa | C E I J L M O P R T U V a |
myNameis | N a e i m s y |
Prerequisites
- Strings
- Sortings
Solution
วิธีทำ
รับ Input มาเป็น String แล้วก็แค่ทำการ Sort ตรงๆเลย โดยสำหรับข้อนี้ สามารถใช้อัลกอริทึมการเรียงลำดับแบบใดก็ได้ ไม่ว่าจะเป็น Bubble Sort, Insertion Sort, Selection Sort, ฯลฯ
Code
string_sorting.c
#include <stdio.h>
#include <string.h>
int main() {
char str[35];
scanf("%s", str);
int n = strlen(str); // strlen(): หาความยาวของ String
// ทำการเรียงตัวอักษรใน String (Bubble Sort)
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - 1; j++) {
if (str[j] > str[j + 1]) {
char temp = str[j];
str[j] = str[j + 1];
str[j + 1] = temp;
}
}
}
// พิมพ์คำตอบออกมา
printf("%c ", str[0]);
for (int i = 1; i < n; i++) {
if (str[i] == str[i - 1]) continue;
printf("%c ", str[i]);
}
return 0;
}