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

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


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

หมายเหตุ − คำอาจมีตัวอักษรพิมพ์ใหญ่และพิมพ์เล็ก

มาดูตัวอย่าง

อินพุต − str = "My Mom and Anna left at Noon";

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

คำอธิบาย − คำพาลินโดรมในประโยคข้างต้นคือ − Mom, Anna และ Noon (ไม่สนใจพิมพ์ใหญ่พิมพ์เล็ก)

อินพุต − str= "I am at level 121 in Racecar game"

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

คำอธิบาย − คำพาลินโดรมในประโยคข้างต้นคือ − I, level, 121, Racecar (ไม่สนใจพิมพ์ใหญ่พิมพ์เล็ก)

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

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

  • รับอาเรย์สตริง str[] ที่มีประโยค
  • ฟังก์ชัน check(string extra) รับสตริง คืน true ถ้าสตริงเป็นพาลินโดรม มิฉะนั้นคืน false
  • คำนวณความยาวสตริง extra เป็น len=extra.length()
  • แปลงสตริงทั้งหมดเป็นพิมพ์เล็กด้วย (extra.begin(), extra.end(), extra.begin(), ::tolower)
  • เริ่มเดินทางจากดัชนี 0 ของคำถึง index<len ด้วยลูป FOR
  • เปรียบเทียบ extra[i]==extra[len-1] ถ้าไม่ตรงคืน false มิฉะนั้นคืน true
  • ฟังก์ชัน palindrome(string str, int length) รับประโยคและความยาว คืนจำนวนคำพาลินโดรมในมัน
  • กำหนด count เริ่มต้น 0
  • ตัวแปรสตริงชั่วคราว extra="" เพื่อเลือกและเก็บคำแต่ละคำ
  • เริ่มเดินทางประโยคด้วยลูป FOR จากดัชนี 0 ถึง i<length
  • ตัวแปรตัวอักษรชั่วคราว temp=str.at(i)
  • ถ้า temp ไม่ใช่ช่องว่าง เพิ่มเข้า extra เพื่อสร้างคำ
  • ถ้า temp เป็นช่องว่าง ถ้า check(extra) คืน true เพิ่ม count
  • ทำ extra="" ใหม่
  • count ท้ายสุดจะมีจำนวนคำพาลินโดรมทั้งหมด
  • คืน count

ตัวอย่างโค้ด C++

#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