给定一个字符串,逐个翻转字符串中的每个单词。
示例 1:
输入: "the sky is blue
" 输出: "blue is sky the
"
示例 2:
输入: " hello world! " 输出: "world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
示例 3:
输入: "a good example" 输出: "example good a" 解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
说明:
- 无空格字符构成一个单词。
- 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
- 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
package LeetCode;
import java.util.Stack;
public class ReverseWords {
public String reverseWords(String s) {
boolean juge = false;
String str = "";
Stack<String> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == ' ') {
if (juge) {
if (str != null) {
stack.push(str);
str = "";
} else {
continue;
}
} else {
continue;
}
} else {
juge = true;
str += c;
}
}
if (!str.equals(" ") && !str.equals("") && str.length() > 0) {
stack.push(str);
}
StringBuffer res = new StringBuffer();
while (!stack.isEmpty()) {
String j = stack.pop();
if (!j.equals(" ") && !j.equals("")) {
res.append(j);
if (!stack.isEmpty())
res.append(" ");
}
}
return res.toString();
}
public static void main(String[] args) {
ReverseWords r = new ReverseWords();
System.out.println(r.reverseWords(" hello world! "));
}
}