Skip to content

ข้อสอบท้ายค่าย 1 ศูนย์ สอวน.กรุงเทพมหานคร ปี 2566 ข้อที่ 5


Problem

สรุปโจทย์

รับ String ที่มีแค่ตัวอักษรภาษาอังกฤษตัวพิมพ์ใหญ่มา จงหาตัวอักษรที่มี ASCII VALUE น้อยที่สุดและไม่มีตัวซ้ำใน String

สิ่งที่ต้องทำ

หาตัวอักษรที่น้อยที่สุดและไม่มีตัวซ้ำใน String

ตัวอย่าง

Input Output
COMPUTER C
THANAKIT K

Prerequisites

  • Arrays
  • Strings

Solution

วิธีทำ

เราจะใช้ Array เก็บว่าตัวอักษรแต่ละตัวมีการปรากฏมาทั้งหมดกี่ครั้ง โดยจะใช้ ASCII VALUE ของแต่ละตัวแทน Index มาเก็บใส่ Array และตอนจบก็ไล่จาก 'A' - 'Z' เพื่อตรวจสอบว่าตัวอักษรใดที่ปรากฏมาเพียง 1 ครั้ง และมีค่าน้อยที่สุด


Code

posn1_66_bkk_p5.cpp
#include <stdio.h>

int main(){
    char str[25];
    scanf("%s", str);

    // นับจำนวนการโผล่ตัวของตัวอักษรแต่ละตัว
    int cnt[26] = {0};
    for (int i = 0; str[i] != '\0'; i++) cnt[str[i] - 'A']++;

    // loop แล้วหาตัวอักษรตัวแรกที่โผล่มาเพียงครั้งเดียว แล้วพิมพ์คำตอบออกมา
    for (int i = 0; i < 26; i++) {
        if (cnt[i] == 1) {
            printf("%c", 'A' + i);
            break;
        }
    }
}