String คืออาร์เรย์ตัวอักษรหนึ่งมิติ จบด้วย null character (\0) ความถี่ (Frequency) คือจำนวนครั้งที่ตัวอักษรปรากฏในสตริง
ตัวอย่าง: String "Football is a sport" ตัวอักษร 'o' ปรากฏ 3 ครั้ง
โปรแกรมหาความถี่ตัวอักษรเฉพาะตัว
#include <iostream>
using namespace std;
int main() {
char str[100] = "this string contains many alphabets";
char c = 'a';
int count = 0;
for(int i = 0; str[i] != '\0'; i++) {
if(str[i] == c)
count++;
}
cout << "Frequency of alphabet " << c << " in the string is " << count;
return 0;
}
ผลลัพธ์
Frequency of alphabet a in the string is 4
อธิบาย
for loop วนจนกว่าจะเจอ \0 ถ้า str[i] == c ให้ count++ แล้วแสดงผล
โปรแกรมหาความถี่ตัวอักษรทั้งหมด (a-z)
#include <iostream>
using namespace std;
int main() {
char str[100] = "this string contains many alphabets";
int i = 0, alphabet[26] = {0}, j;
while (str[i] != '\0') {
if (str[i] >= 'a' && str[i] <= 'z') {
j = str[i] - 'a';
++alphabet[j];
}
++i;
}
cout << "Frequency of all alphabets in the string is:" << endl;
for (i = 0; i < 26; i++)
cout << char(i + 'a') << " : " << alphabet[i] << endl;
return 0;
}
ผลลัพธ์
Frequency of all alphabets in the string is: a : 4 b : 1 c : 1 d : 0 e : 1 f : 0 g : 1 h : 2 i : 3 j : 0 k : 0 l : 1 m : 1 n : 4 o : 1 p : 1 q : 0 r : 1 s : 4 t : 4 u : 0 v : 0 w : 0 x : 0 y : 1 z : 0
อธิบาย
while loop วนจน \0 ถ้าเป็นตัวพิมพ์เล็ก a-z คำนวณ index j = str[i] - 'a' เพิ่ม alphabet[j]++ แล้วแสดงทั้ง 26 ตัวอักษร