Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมหาตัวอักษรที่พบบ่อยเป็นอันดับสองใน C++

ในปัญหานี้ เราได้รับสตริง 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