我卡在 leetcode 问题 151. 反转字符串中的单词
i stuck in leetcode problem 151. Reverse Words in a String
给定一个输入字符串 s,反转单词的顺序。
单词定义为非 space 字符的序列。 s 中的单词将被至少一个 space 分隔。
Return 由单个 space.
连接的倒序单词字符串
class Solution {
public:
string reverseWords(string s) {
string ans;
int i =0;
int n = s.size();
while(i<n)
{
while(i<n and s[i]==' ')
i++;
if(i>=n)
break;
int j =i+1;
while(j<n and s[j]!=' ')
j++;
string word = s.substr(i,j-1);
if(ans.size()==0)
ans = word;
else
ans = word + " "+ ans;
i = j+1;
}
return ans;
}
};
预期输出-“blue is sky the”
我的输出-“blue is blue sky is th”
您的代码中只有一个小错字。
行
string word = s.substr(i,j-1);
应该是
std::string word = s.substr(i, j - i);
所以你把 i 和 1 搞混了。
没什么大不了的。
#include <string>
#include <iostream>
std::string reverseWords(std::string s) {
std::string ans;
int i = 0;
int n = s.size();
while (i < n)
{
while (i < n and s[i] == ' ')
i++;
if (i >= n)
break;
int j = i + 1;
while (j < n and s[j] != ' ')
j++;
std::string word = s.substr(i, j - i);
if (ans.size() == 0)
ans = word;
else
ans = word + " " + ans;
i = j + 1;
}
return ans;
}
int main() {
std::cout << reverseWords("ab cd ef");
}
给定一个输入字符串 s,反转单词的顺序。 单词定义为非 space 字符的序列。 s 中的单词将被至少一个 space 分隔。 Return 由单个 space.
连接的倒序单词字符串class Solution {
public:
string reverseWords(string s) {
string ans;
int i =0;
int n = s.size();
while(i<n)
{
while(i<n and s[i]==' ')
i++;
if(i>=n)
break;
int j =i+1;
while(j<n and s[j]!=' ')
j++;
string word = s.substr(i,j-1);
if(ans.size()==0)
ans = word;
else
ans = word + " "+ ans;
i = j+1;
}
return ans;
}
};
预期输出-“blue is sky the” 我的输出-“blue is blue sky is th”
您的代码中只有一个小错字。
行
string word = s.substr(i,j-1);
应该是
std::string word = s.substr(i, j - i);
所以你把 i 和 1 搞混了。
没什么大不了的。
#include <string>
#include <iostream>
std::string reverseWords(std::string s) {
std::string ans;
int i = 0;
int n = s.size();
while (i < n)
{
while (i < n and s[i] == ' ')
i++;
if (i >= n)
break;
int j = i + 1;
while (j < n and s[j] != ' ')
j++;
std::string word = s.substr(i, j - i);
if (ans.size() == 0)
ans = word;
else
ans = word + " " + ans;
i = j + 1;
}
return ans;
}
int main() {
std::cout << reverseWords("ab cd ef");
}