前言
近期准备把力扣leetcode算法题刷一遍,算是一个Flag吗?几千道题啊啊啊啊啊。。。。。。我是不是膨胀了?
把我的C++解决方案记录在这里,与大家分享。
题目描述
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: "Let's take LeetCode contest"
输出: "s'teL ekat edoCteeL tsetnoc"
注意: 在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
C++代码实现
class Solution {
public:
string reverseWords(string s) {
size_t left = 0; //单词起点
size_t right; //单词终点
size_t len = s.size();
size_t pos = 0;
char tem;
if(0 != len){
while(pos <= len){
if(' ' == s[pos]){
right = pos - 1;
for(;left < right; left++, right--){
tem = s[left];
s[left] = s[right];
s[right] = tem;
}
left = pos + 1;
}else if('\0' == s[pos]){
right = pos - 1;
for(;left < right; left++, right--){
tem = s[left];
s[left] = s[right];
s[right] = tem;
}
}
pos++;
}
}
return s;
}
};
代码性能
第一次提交没有注意到空输入""
,大家注意一下就好。