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

Đếm ký tự có hàng xóm giống nhau trong chuỗi C++

Cho một chuỗi str, nhiệm vụ là đếm số ký tự có hai hàng xóm (bên trái và bên phải) giống nhau. Ký tự đầu và cuối chuỗi luôn được tính vì chỉ có một hàng xóm.

Ví dụ

Input - str = "poiot" Output - count is 3

Giải thích - 'p'(đầu), 't'(cuối), 'i'(hàng xóm 'o' và 'o') → 3 ký tự.

Input - str = "nitihig" Output - count is 4

Giải thích - 'n'(đầu), 'g'(cuối), 't'(hàng xóm 'i','i'), 'h'(hàng xóm 'i','i') → 4 ký tự.

Phương pháp tiếp cận

  • Nếu độ dài ≤ 2: trả về độ dài (tất cả đều đếm)
  • Khởi tạo count = 2 (tính ký tự đầu và cuối)
  • Duyệt i từ 1 đến len-2, nếu str[i-1] == str[i+1] thì count++
  • Trả về count

Ví dụ code C++

#include <iostream>
#include <string>
using namespace std;

int countChar(string st) {
    int size = st.length();
    if (size <= 2) return size;

    int result = 2;
    for (int i = 1; i < size - 1; i++) {
        if (st[i-1] == st[i+1])
            result++;
    }
    return result;
}

int main() {
    string st = "poiot";
    cout << "count is " << countChar(st);
    return 0;
}

Kết quả

count is 3