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

C++で回文を壊す


回文文字列の回文があるとすると、文字列が回文ではない字句的に最小の文字列になるように、1文字を小文字の英語文字に置き換える必要があります。そうしたら、最後の文字列を見つける必要があります。そうする方法がない場合は、空の文字列を返します。したがって、入力が「abccba」のような場合、出力は「aaccba」になります。

これを解決するには、次の手順に従います-

  • 変更:=false

  • 文字列のサイズが1の場合は、空白の文字列を返します

  • i:=0およびj:=sの長さ– 1

  • leftA:=TrueおよびrightA:=True

  • i

    • s [i]が「a」でない場合は、s [i]を「a」として設定し、sを返します

    • iを1増やし、jを1減らします

  • s [sのサイズ-1]:=‘b’

  • sを返す

例(C ++)

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   string breakPalindrome(string s) {
      bool changed = false;
      if(s.size() == 1)return "";
      int i = 0, j = s.size() - 1;
      bool leftA = true;
      bool rightA= true;
      while(i < j){
         if(s[i] != 'a'){
            s[i] = 'a';
            return s;
         }
         i++;
         j--;
      }
      s[s.size() - 1] = 'b';
      return s;
   }
};
main(){
   Solution ob;
   cout << (ob.breakPalindrome("abccba"));
}

入力

"abccba"

出力

aaccba

  1. C++での文字列のトークン化

    このセクションでは、C++で文字列をトークン化する方法を説明します。 Cでは、文字配列にstrtok()関数を使用できます。ここに文字列クラスがあります。次に、その文字列から区切り文字を使用して文字列を切り取る方法を説明します。 C ++機能を使用するには、文字列を文字列ストリームに変換する必要があります。次に、getline()関数を使用して、タスクを実行できます。 getline()関数は、文字列ストリーム、出力を送信するための別の文字列、およびストリームのスキャンを停止するための区切り文字を受け取ります。 関数がどのように機能しているかを理解するために、次の例を見てみましょう。 サン

  2. C ++で文字列をトークン化しますか?

    最初の方法は、文字列ストリームを使用して、スペースで区切られた単語を読み取ることです。これは少し制限されていますが、適切なチェックを提供すれば、タスクはかなりうまくいきます。 例 #include <vector> #include <string> #include <sstream> using namespace std; int main() {    string str("Hello from the dark side");    string tmp; // A string