问题
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
例子
思路
-
方法1
split
更优
-
方法2
用栈,不为" “就放到栈里,如果是” ",就把栈里的字符取出放入sb,就反过来的
代码
//方法1
class Solution {
public String reverseWords(String s) {
String[] arr= s.split(" ");
StringBuilder sb = new StringBuilder();
for(String ss :arr) {
for(int i=ss.length()-1; i>=0; i--)
sb.append(ss.charAt(i));
sb.append(" ");
}
return sb.toString().trim();//最后一个为" "
}
}
//方法2
Stack<Character> stack = new Stack<>();
StringBuilder sb = new StringBuilder();
for(int i=0; i<s.length(); i++){
if(s.charAt(i)!=' ') stack.push(s.charAt(i));
else{
while(stack.size()>0)
sb.append(stack.pop());
sb.append(' ');
}
}
//最后一个单词
while(stack.size()>0)
sb.append(stack.pop());
return sb.toString();