Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.
Example 1:
Input: "Let's take LeetCode contest"
Output: "s'teL ekat edoCteeL tsetnoc"
Note: In the string, each word is separated by single space and there will not be any extra space in the string.
class Solution(object):
def reverseWords(self, s):
"""
:type s: str
:rtype: str
"""
# split world, for echo one reverse it and join it.
"""
ans = ""
flag = True
for word in s.split(" "):
if flag:
ans += word[::-1]
flag = False
else:
ans += " "+word[::-1]
return ans
"""
#return " ".join(w[::-1] for w in s.split(" "))
ans = ""
for word in s.split(" "):
ans += word[::-1] + " "
return ans.strip()
个人倾向于一行代码搞定。
解法2: 耗时较" ".join(w[::-1] for w in s.split(" "))
# Here I first reverse the order of the words and then reverse the entire string.
def reverseWords(self, s):
return ' '.join(s.split()[::-1])[::-1]
写一个c++的,贪心:
class Solution {
public:
void reverseWord(string &s, int i, int j) {
char c;
while(i < j) {
c = s[j];
s[j--] = s[i];
s[i++] = c;
}
}
string reverseWords(string s) {
int len= s.length();
for(int i=0; i<len; ) {
int j = i;
while (j<len && s[j] != ' ') j+=1;
reverseWord(s, i, j-1);
i = j+1;
}
return s;
}
};
class Solution {
public:
string reverseWords(string s) {
size_t front = 0;
for(int i = 0; i <= s.length(); ++i){
if(i == s.length() || s[i] == ' '){
reverse(&s[front], &s[i]);
front = i + 1;
}
}
return s;
}
};
标签:word,String,int,557,split,Words,ans,reverseWords,string From: https://blog.51cto.com/u_11908275/6381148