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

นับตัวอักษรที่มีเพื่อนบ้านด้านซ้ายและขวาเหมือนกันใน C++

เราได้รับสตริง งานคือการนับตัวอักษรที่มีเพื่อนบ้านทั้งสองข้าง (ซ้ายและขวา) เป็นตัวอักษรเดียวกัน โดยตัวอักษรแรกและตัวสุดท้ายจะนับเสมอเพราะมีเพื่อนบ้านเพียงข้างเดียว

ตัวอย่าง

Input − string str = "poiot" Output − count is 3

คำอธิบาย − p (ตัวแรก), t (ตัวสุดท้าย), i (เพื่อนบ้านซ้ายขวาเป็น o ทั้งคู่) รวม 3 ตัว

Input − string str = "nitihig" Output − count is 4

คำอธิบาย − n (ตัวแรก), g (ตัวสุดท้าย), t (เพื่อนบ้าน i,i), h (เพื่อนบ้าน i,i) รวม 4 ตัว

แนวทางการแก้ปัญหา

  • ถ้าความยาวสตริง ≤ 2 คืนค่าความยาวเลย (ทุกตัวนับได้)
  • เริ่มต้นนับ = 2 (ตัวแรกและตัวสุดท้าย)
  • วนลูป i จาก 1 ถึง len-2
  • ถ้า str[i-1] == str[i+1] ให้เพิ่มตัวนับ

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

#include <iostream>
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;
}

ผลลัพธ์

count is 3

บทความนี้สาธิตการนับตัวอักษรในสตริงที่มีเพื่อนบ้านซ้ายและขวาเหมือนกัน รวมถึงตัวแรกและตัวสุดท้ายที่นับเสมอ โดยใช้การตรวจสอบดัชนี i-1 และ i+1