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