C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

同じ「a」と「b」のカウントで更新された文字列を取得するC++コード


長さnが偶数の文字列Sがあるとします。 Sには、「a」と「b」の2種類の文字のみが含まれます。文字列を変更して、その長さのすべてのプレフィックスに同じ量の文字「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

  1. C++の英語のアルファベットと同じ位置にある文字を数えます

    大文字と小文字の両方を含む任意の長さの文字列が与えられます。タスクは、英語のアルファベットと同じ位置にある文字の数を計算することです。 例 Input − String str = eBGD Output − Count is: 2 説明 − BとDは、英語のアルファベットでBが2番目の位置にあり、Dが4番目の位置にあるのと同じ順序にある​​文字です。 Input − String str = Abcdeizxy Output − Count is: 5 説明 − A、B、C、D、およびEは、Aが最初の位置にあり、次にB、C、D、およびEが来

  2. C++で同じ文字列を取得するために必要な最小回転

    問題の説明 文字列が与えられた場合、同じ文字列を取得するために必要な最小回転数を見つける必要があります 例 入力文字列が「bbbbb」の場合、最低1回転が必要です アルゴリズム 1. Initialize result = 0 2. Make a temporary string equals to original string concatenated with itself. 3. Take the substring of temporary string of size same as original string starting from second character