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

รหัส C ++ เพื่อรับสตริงที่อัปเดตด้วยการนับ 'a' และ 'b' เดียวกัน


สมมติว่าเรามีสตริง S ที่มีความยาวเท่ากัน n S มีอักขระเพียงสองประเภทคือ 'a' และ 'b' เราต้องการแก้ไขสตริงเพื่อให้ทุกคำนำหน้ามีความยาวมีจำนวนตัวอักษร 'a' และ 'b' เท่ากัน เพื่อให้บรรลุสิ่งนั้น เราสามารถดำเนินการตามจำนวนครั้งได้โดยพลการ:เลือกตำแหน่งบางตำแหน่งในสตริงของเขาและแทนที่ตัวอักษรในตำแหน่งนี้ด้วยตัวอักษรอื่น ส่งคืนสตริงที่อัปเดต

ดังนั้น หากอินพุตเป็น S ="aabbbb" ผลลัพธ์จะเป็น "baabab"

ขั้นตอน

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

n := size of S
for initialize i := 0, when i < n, update i := i + 2, do:
   if S[i] is same as S[i + 1], then:
      (increase ans by 1)
   S[i] := (if S[i] is same as 'a', then 'b', otherwise 'a')
return S

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include <bits/stdc++.h>
using namespace std;
string solve(string S){
   int n = S.size(), ans = 0;
   for (int i = 0; i < n; i += 2)
      if (S[i] == S[i + 1]){
         ans++;
         S[i] = S[i] == 'a' ? 'b' : 'a';
      }
   return S;
}
int main(){
   string S = "aabbbb";
   cout << solve(S) << endl;
}

อินพุต

"aabbbb"

ผลลัพธ์

baabab