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

C++で文字列内の単語を逆にする


単語が少ない文字列があるとします。文字列内の単語の位置を逆にする必要があります。つまり、文字列が「速い茶色のキツネが怠惰な犬を飛び越える」のようなものである場合

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

  • 関数getString()を定義します。これは入力としてsを取り、これは-

    として機能します。
  • i:=0、j:=sのサイズ– 1

  • s [i] =‘’およびi

  • j>=0かつs[j]=‘’の場合、jを1減らします

  • ret:=空の文字列

  • i <=jの場合、iを1増やします

    • retのサイズがゼロ以外で、retの最後の要素が‘’で、s [i]が‘’の場合、次の反復に進みます

    • ret:=ret + s [i]

  • reverseWords()と呼ばれる別のメソッドを定義します。これは入力としてsを取ります

  • j:=0

  • 0からs– 1のサイズの範囲のIの場合、各ステップでi:=j

    を設定します。
    • s [i]が空白の場合、j:=i + 1

    • それ以外の場合

      • j +1

      • x:=iおよびy:=j

      • x

        • s[x]とs[y]を交換し、xを1増やし、yを1減らします

      • jを1増やします

  • メインの方法から、次のようにします-

  • 文字列sを逆にします

  • reverseWords(s)

  • getString(s)を返す

例(C ++)

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   string reverseWords(string s) {
      reverse(s.begin(), s.end());
      reverseWordss(s);
      return getString(s);
   }
   string getString(string s){
      int i = 0;
      int j = s.size() - 1;
      while(s[i] == ' ' && i < s.size()) i++;
      while(j >= 0 && s[j] == ' ') j--;
      string ret = "";
      for(;i <= j; i++){
         if(ret.size() && ret.back() == ' ' && s[i] == ' ')continue;
         ret += s[i];
      }
      return ret;
   }
   void reverseWordss(string& s){
      int j = 0;
      for(int i = 0; i < s.size() ;i = j){
         if(s[i] == ' '){
            j = i + 1;
         }
         else{
            while(j + 1 < s.size() && s[j + 1] != ' ') j++;
            int x = i;
            int y = j;
            while(x < y){
               swap(s[x], s[y]);
               x++;
               y--;
            }
            j++;
         }
      }  
   }
};
main(){
   Solution ob;
   cout << (ob.reverseWords("The quick brown fox jumps over a lazy dog"));
}

入力

"The quick brown fox jumps over a lazy dog"

出力

"dog lazy a over jumps fox brown quick The"

  1. 文字列内の単語を逆にするC#プログラム

    次は文字列だとしましょう- Hello World 文字列を逆にすると、単語は-のように表示されます。 olleH dlroW 例 reverse()メソッドを使用し、次のコードを試して、文字列内の単語を逆にします。 using System; using System.Linq; class Demo {    static void Main() {       // original string       string str = "Hello World";   &nbs

  2. Pythonで特定の文字列の単語を逆にする

    文字列が与えられ、文字列に存在するすべての単語を逆にすることが目標です。分割法と逆関数を使用して出力を実現できます。いくつかのサンプルテストケースを見てみましょう。 Input: string = "I am a python programmer" Output: programmer python a am I Input: string = "tutorialspoint is a educational website" Output: website educational a is tutorialspoint 以下の手順に従って、目