题目
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例
输入:“Let’s take LeetCode contest”
输出:“s’teL ekat edoCteeL tsetnoc”
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
想法
临时数组var存每个单词,并倒序排列后存入res
方法1
python实现
class Solution:
def reverseWords(self, s: str) -> str:
n=len(s)
var,res=list(),list()
for i in range(n):
if s[i]!=' ':
var.append(s[i])
else:
if len(var)==0:
res.append(' ')
else:
long = len(var)
for j in range (long-1,-1,-1):
res.append(var[j])
res.append(' ')
var=[]
if len(var)!=0:
for j in range (len(var)-1,-1,-1):
res.append(var[j])
return "".join(res)
java实现
class Solution {
public String reverseWords(String s) {
String res = "";
int n = s.length();
int i = 0;
while (i < n) {
int start = i;
// 记录单词长度
while (i < n && s.charAt(i) != ' ') {
i++;
}
// 反转单词
for (int p = start; p < i; p++) {
res += s.charAt(start + i - 1 - p);
}
// 记录空格
while (i < n && s.charAt(i) == ' ') {
i++;
res += ' ';
}
}
return res;
}
}
方法2
Java实现
class Solution {
public String reverseWords(String s) {
int n = s.length();
int var = 0, flag = 0;
String res ="";
while (var<n){
while (var<n && s.charAt(var) != ' ') var++;
flag=var-1;
while (flag>=0 && s.charAt(flag) != ' '){
res+=s.charAt(flag);
flag--;
}
var+=1;
if (var<n) res+=' ';
}
return res;
}
}