//如果字符串中单词之间有多个空格 反转后的字符串仍保留多个空格
//输入" i love you" => "you love i " (注意字符串开头或结尾仍可能有空格)
string reverseString(string str) {
if (!str.size())
return "";
string res = ""; //返回结果
string sup_str = ""; //记录每个单词
for (int i = 0; i < str.size();) {
if (str[i] == ' ') {
res = " " + sup_str + res;
sup_str = ""; //需要将sup_str置空 即使下一个字符仍是空格相当于加了个空串 没有影响
i++;
}
else {
//取单词
while (i < str.size() && str[i] != ' ') {
sup_str += str[i++];
}
}
}
//这里不能忘记加上最后一个单词
res = sup_str + res;
return res;
}
//如果字符串中单词之间有多个空格 反转后的字符串只保留一个空格
//输入" i love you" => "you love i " (注意字符串开头或结尾仍可能有空格)
string reverseString2(string str) {
if (!str.size())
return "";
string res, sup_str;
res = sup_str = "";
for (int i = 0; i < str.size(); ) {
//去除多个空格
if (str[i] == ' ') {
res = sup_str + res;
while (str[i] == ' ')
i++;
//这里是加上了去重之后的唯一空格
res = " " + res;
sup_str = "";
}
else {
while (str[i] != ' ') {
sup_str += str[i++];
}
}
}
res = sup_str + res;
return res;
}
反转字符串---C++实现
最新推荐文章于 2024-05-09 10:37:45 发布