Cho một câu tiếng Anh. Đếm số từ là palindrome (đọc xuôi ngược đều giống nhau, không phân biệt chữ hoa/thường). Ví dụ: "Madam speaks good Malayalam" → 2 từ (Madam, Malayalam).
Ví dụ
Đầu vào − str = "My Mom and Anna left at Noon"
Đầu ra − 3
Giải thích − Mom, Anna, Noon.
Đầu vào − str = "I am at level 121 in Racecar game"
Đầu ra − 4
Giải thích − I, level, 121, Racecar.
Phương pháp giải
Tách từ bằng dấu cách. Với mỗi từ, chuyển thành chữ thường. So sánh ký tự đầu với cuối, thứ 2 với áp chót... Nếu khác → không phải palindrome. Đúng hết → đếm.
- Hàm
check(string extra): chuyển lowercase, so sánh 2 đầu. - Hàm
palindrome(string str, int length):- Duyệt chuỗi, tích lũy ký tự vào
extracho đến khi gặp dấu cách. - Gọi
check(extra), nếu true →count++. - Reset
extra.
- Duyệt chuỗi, tích lũy ký tự vào
Ví dụ code
#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 += temp;
else {
if (check(extra)) count++;
extra = "";
}
}
return count;
}
int main() {
string str = "nitin wants nitin for his company named nitin after nitin";
str += " ";
int length = str.length();
cout << "Count of palindrome words in a sentence are: " << palindrome(str, length) << endl;
return 0;
}
Đầu ra
Count of palindrome words in a sentence are: 4