C ++中的字符串中的反向单词

假设我们有一个只有几个单词的字符串。我们必须反转字符串中的单词位置。因此,如果字符串像“快速的棕色狐狸跳过一只懒狗”

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个函数getString(),它将以s作为输入,它将作为-

  • i:= 0,j:= s的大小– 1

  • 当s [i] =''且i <s的大小时,将i增加1

  • 当j> = 0且s [j] =''时,将j减1

  • ret:=空字符串

  • 对于i <= j,将i加1

    • 如果ret的大小不为零并且ret的最后一个元素是''且s [i]是'',则进行下一次迭代

    • ret:= ret + s [i]

  • 定义另一个名为的方法reverseWords(),它将以s作为输入

  • j:= 0

  • 对于I,范围为0到s – 1,在每一步中设置i:= j

    • 而j + 1 <s的大小,并且s [j + 1]不是空格,则将j加1

    • x:= i和y:= j

    • 当x <y

    • 将j增加1

    • 交换s [x]和s [y],将x增加1,并将y减少1

    • 如果s [i]为空,则j:= i + 1

    • 除此以外

    • 从主要方法中,执行以下操作-

    • 反转字符串s

    • reverseWord(s)

    • 返回getString

    范例(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"

    以上是 C ++中的字符串中的反向单词 的全部内容, 来源链接: utcz.com/z/316521.html

    回到顶部