Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm từ palindrome trong câu trong C++


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 extra cho đến khi gặp dấu cách.
    • Gọi check(extra), nếu true → count++.
    • Reset extra.

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