เราได้รับสตริงที่มีประโยคภาษาอังกฤษ เป้าหมายคือหาจำนวนคำในสตริงที่เป็นพาลินโดรม คำพาลินโดรมคือคำที่อ่านจากต้นหรือท้ายมีลำดับตัวอักษรเหมือนกัน หากประโยคคือ "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