【题目】
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 :
输入: "Let's take LeetCode contest"
输出: "s'teL ekat edoCteeL tsetnoc"
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
【思路】
找到每个单词,对单词进行翻转。
【代码】
python版本
class Solution(object):
def reverseWords(self, s):
"""
:type s: str
:rtype: str
"""
ls = s.split()
ls = [lsi[::-1] for lsi in ls]
return ' '.join(ls)
C++版本
class Solution {
public:
string reverseWords(string s) {
int i=, j=;
char tmp;
// 找到空格,确定单词的首尾位置,进行翻转
for(i=; i<s.size(); i++){
if(s[i] == ' '){
for(int k=; k < (i-j)/; k++){
tmp = s[j+k];
s[j+k] = s[i-1-k];
s[i-1-k] = tmp;
}
j = i+;
}
}
// 最后一个单词
for(int k=; k < (i-j)/; k++){
tmp = s[j+k];
s[j+k] = s[i-1-k];
s[i-1-k] = tmp;
}
return s;
}
};