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

อักขระที่เกิดขึ้นสูงสุดในสตริงอินพุตโดยใช้ C++


ในปัญหานี้ เราได้รับสตริงอินพุตของอักขระตัวพิมพ์เล็ก งานของเราคือ m อักขระที่เกิดขึ้นจริงในสตริงอินพุต .

ในกรณีที่มีหลายค่าที่มีความถี่ในการเกิดขึ้นเท่ากัน เราจำเป็นต้องพิมพ์ค่าที่เล็กกว่าพจนานุกรมศัพท์

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

ป้อนข้อมูล

string = “programming”

ผลผลิต

g

แนวทางการแก้ปัญหา

ในการหาทางแก้ไขปัญหา เราต้องเรียงลำดับสตริงที่อ่านแล้วสำรวจสตริงเพื่อที่เราจะได้พบอักขระที่มีจำนวนอักขระสูงสุดในสตริง เราจะใช้วิธีแฮช (วิธีตารางแฮช) เพื่อเอาชนะปัญหานี้ การข้ามและแฮชอักขระแต่ละตัวในอาร์เรย์ของอักขระเรียกว่าการแฮช

โดยปกติขนาดอาร์เรย์แฮชจะได้รับการจัดสรรเป็น 256 แต่ถ้าสตริงมีเฉพาะอักขระตั้งแต่ 0 ถึง 127 เราอาจใช้ตารางแฮชขนาด 128 เพื่อให้เราสามารถจัดสรรขนาดตารางแฮชใหม่ตามสตริงได้

อัลกอริทึม

  • อ่านสตริงอินพุต

  • สร้างฟังก์ชันเพื่อคำนวณจำนวนอักขระสูงสุดที่เกิดขึ้นในสตริง

  • สร้างอาร์เรย์เพื่อนับจำนวนอักขระแต่ละตัวและเริ่มต้นอาร์เรย์เป็น 0

  • สร้างอาร์เรย์การนับจำนวนอักขระจากสตริงอินพุต

  • เริ่มต้นการนับและผลลัพธ์สูงสุด

  • ข้ามผ่านสตริงและรักษาจำนวนกันและกัน

  • สุดท้าย ให้หาตัวอักษรที่มีจำนวนสูงสุดแล้วพิมพ์ออกมา

ตัวอย่าง

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

#include <bits/stdc++.h>
using namespace std;
char findMaxOccuringChar(char str[]){
   int freq[26] = { 0 };
   int maxFreq = -1;
   char maxFreqChar;
   int len = strlen(str);
   for (int i = 0; i < len; i++)
      freq[str[i] - 'a']++;
   for (int i = 0; i < 26; i++)
      if (maxFreq < freq[i]) {
         maxFreq = freq[i];
         maxFreqChar = (char)(i + 'a');
      }
   return maxFreqChar;
}
int main(){
   char str[] = "programming";
   cout<<"Maximum occurring character of input string is "<<findMaxOccuringChar(str);
   return 0;
}

ผลลัพธ์

Maximum occurring character of input string is g