เราได้รับสตริงที่มี สมมติว่า str และงานคือการคำนวณจำนวนอักขระในสตริง str ที่มีเพื่อนบ้านเหมือนกัน และจะรวมทั้งด้านซ้ายและด้านขวาของอักขระในสตริง นอกจากนี้ ในสถานการณ์สมมตินี้ อักขระตัวแรกและตัวสุดท้ายในสตริงจะถูกพิจารณาเสมอเนื่องจากมีอักขระที่อยู่ติดกันเพียงตัวเดียว
ตัวอย่าง
Input − string str = “poiot” Output − count is 3
คำอธิบาย − ในสตริงอักขระที่ระบุ p, t และ i มีเพื่อนบ้านคนเดียวกัน ดังนั้นการนับจะเพิ่มขึ้นเป็น 3
Input − string str = “nitihig” Output − count is 4
คำอธิบาย − ในสตริงอักขระที่กำหนด n, t, h และ g จะมีเพื่อนบ้านเหมือนกัน ดังนั้นการนับจะเพิ่มขึ้นเป็น 4
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
ป้อนสตริงในตัวแปร สมมติว่า str
-
คำนวณความยาวของสตริง str โดยใช้ฟังก์ชัน length() ที่จะคืนค่าจำนวนเต็มตามจำนวนตัวอักษรในสตริงรวมทั้งช่องว่าง
-
หากความยาวของสตริงน้อยกว่าหรือเท่ากับ 2 ให้คืนค่าการนับเป็นความยาวของสตริงเพราะจะถูกนับทั้งหมด
-
หากความยาวของสตริงมากกว่า 2 ให้เริ่มต้นการนับด้วย 2
-
ตอนนี้ เริ่มลูปด้วย i ถึง 1 จนกว่า i จะน้อยกว่า (ยาว-1)
-
ภายในลูป ตรวจสอบว่า (str[i-1] =str[i+1]) แล้วเพิ่มจำนวนขึ้น 1
-
ตอนนี้ส่งคืนมูลค่ารวมของการนับ
-
พิมพ์ผลลัพธ์
ตัวอย่าง
#include <iostream> using namespace std; // To count the characters int countChar(string st){ int size = st.length(); if (size <= 2){ return size; } int result = 2; // Traverse the string for (int i = 1; i < size - 1; i++){ // Increment the count by 1 if the previous // and next character is same if (st[i - 1] == st[i + 1]){ result++; } } // Return result return result; } int main(){ string st = "poiot"; cout <<"count is " <<countChar(st); return 0; }
ผลลัพธ์
หากเรารันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้
count is 3