ในปัญหานี้ เราได้รับสตริง str งานของเราคือสร้าง โปรแกรมหาตัวอักษรที่พบบ่อยเป็นอันดับสองใน C++
ตัวอย่างเพื่อความเข้าใจ
อินพุต
str = "abaacabcba"
เอาต์พุต
'b'
วิธีแก้ปัญหา
เพื่อหาตัวอักษรที่พบบ่อยเป็นอันดับสองในสตริง เราต้องรักษาอาร์เรย์นับ charCount ที่ใช้เก็บความถี่ของแต่ละตัวอักษรในสตริง จากนั้นใช้อาร์เรย์นี้หาตัวอักษรที่มีความถี่ max และ secondMax และแสดงตัวอักษรที่พบบ่อยเป็นอันดับสอง
โปรแกรมตัวอย่างการทำงานของวิธีแก้
ตัวอย่าง
#include <iostream>
#include <string.h>
using namespace std;
char findSecFreqChar(string str){
int charFreq[256] = {0};
for (int i = 0; i < str.length(); i++)
(charFreq[str[i]])++;
int maxFreq = charFreq[0], secFreq = charFreq[0];
for (int i = 0; i < 256; i++){
if (charFreq[i] > charFreq[maxFreq]){
secFreq = maxFreq;
maxFreq = i;
}
else if (charFreq[i] > charFreq[secFreq] && charFreq[i] != charFreq[maxFreq])
secFreq = i;
}
return secFreq;
}
int main(){
string str = "tutorialspoint";
char secFreqChar = findSecFreqChar(str);
cout << "Second most frequent character of the string is" << secFreqChar;
return 0;
}เอาต์พุต
Second most frequent character of the string is i