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

นับคำพาลินโดรมในประโยคในภาษา C++


เราได้รับสตริงที่มีประโยคภาษาอังกฤษ เป้าหมายคือการหาจำนวนคำในสตริงที่เป็นพาลินโดรม คำ Palindrome คือคำที่เมื่ออ่านตั้งแต่ต้นหรือจบจะมีลำดับตัวอักษรเหมือนกัน หากประโยคคือ “มาดามพูดภาษามาลายาลัมได้ดี” การนับคำพาลินโดรมคือ 2 (มาดามและมาลายาลัม)

หมายเหตุ − คำสามารถมีได้ทั้งตัวอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก

ให้เราเข้าใจด้วยตัวอย่าง

ป้อนข้อมูล − str ="แม่ของฉันกับอันนาออกไปตอนเที่ยง";

ผลผลิต − จำนวนคำพาลินโดรมในประโยคคือ − 3

คำอธิบาย − คำ Palindrome ในประโยคข้างบนคือ − Mom, Anna และ Noon (โดยไม่คำนึงถึงตัวพิมพ์ใหญ่)

ป้อนข้อมูล − str=“ฉันอยู่ที่ระดับ 121 ในเกม Racecar”

ผลผลิต − จำนวนคำพาลินโดรมในประโยคคือ − 4

คำอธิบาย − คำ Palindrome ในประโยคด้านบนคือ − I ระดับ 121 Racecar (โดยไม่คำนึงถึงตัวพิมพ์ใหญ่)

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

เราจะนำแต่ละคำหลังเว้นวรรค “ “ ในประโยคแล้วส่งต่อไปยังฟังก์ชัน ฟังก์ชันแปลงอักขระของคำเป็นตัวพิมพ์เล็ก ตอนนี้เริ่มสำรวจจากอักขระตัวแรกของคำและเปรียบเทียบ word[0] กับ word[length-1], word[1] กับ word[length-2] เป็นต้น หากมีความไม่ตรงกันเกิดขึ้น วงแตก อย่างอื่นจะคืนค่าเป็นจริง

  • ใช้สตริงอาร์เรย์ str[] ที่มีประโยค

  • การตรวจสอบฟังก์ชัน (สตริงพิเศษ) รับสตริงและคืนค่า จริง หากสตริงเป็น palindrome อื่นคืนค่าเท็จ

  • คำนวณความยาวของสตริงพิเศษเป็น len=extra.lenght()

  • แปลงสตริงทั้งหมดเป็นตัวพิมพ์เล็กโดยใช้ (extra.begin(), extra.end(), extra.begin(), ::tolower);

  • เริ่มการเดินทางจากดัชนี 0 ของคำจนถึงดัชนี

  • เปรียบเทียบ extra[i]==extra[len-1] หากไม่ตรงกันให้คืนค่าเท็จ มิฉะนั้นคืนค่าเป็นจริง

  • ฟังก์ชัน palindrome(string str, int length) รับประโยคและความยาวและส่งกลับจำนวนคำ palindrome ในนั้น

  • นับเริ่มต้นเป็น 0

  • ใช้สตริงพิเศษพิเศษ ="" เพื่อเลือกและจัดเก็บคำแต่ละคำ

  • เริ่มการเดินทางข้ามประโยคโดยใช้ for loop จาก index 0 ถึง i

  • ใช้อักขระชั่วคราว temp=str.ar(i)

  • ถ้า temp ไม่ใช่ที่ว่างให้เพิ่มเข้าไปเพื่อสร้างคำ

  • หาก temp ไม่ใช่ที่ว่าง ถ้า (ตรวจสอบ (พิเศษ)) คืนค่าจำนวนที่เพิ่มขึ้นจริง

  • Make extra=”” อีกครั้ง

  • การนับครั้งสุดท้ายจะมีจำนวนคำพาลินโดรมทั้งหมด

  • ผลตอบแทนนับเป็นผลลัพธ์

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
bool check(string extra){
   int len = extra.length();
   transform(extra.begin(), extra.end(), extra.begin(), ::tolower);
   for (int i = 0; i < len; i++,len--){
      if (extra.at(i) != extra.at(len - 1)){
         return false;
      }
   }
   return true;
}
int palindrome(string str, int length){
   int count = 0;
   string extra = "";
   for (int i = 0; i < length; i++){
      char temp = str.at(i);
      if (temp != ' '){
         extra = extra + temp;
      }
      else{
         if (check(extra))
            { count++; }
         extra = "";
      }
   }
   return count;
}
int main(){
   string str = "nitin wants nitin for his company named nitin after nitin";
   str = str + " ";
   int length = str.length();
   cout<<"Count of palindrome words in a sentence are: "<<palindrome(str, length)<<endl;
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Count of palindrome words in a sentence are: 4