给定一个字符串,逐个翻转字符串中的每个单词。
快速浏览:
- 空白输入
- 特殊情况
- 常见类库
输入: " hello world! "
输出: "world! hello"
import java.util.ArrayList;
class Solution {
public String reverseWords(String s) {
if (s == null || s.length() == 0)
return "";
ArrayList<String> arr = new ArrayList<>();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) != ' ') {
sb.append(s.charAt(i));
if (i == s.length() - 1)
arr.add(sb.toString());
} else {
if (sb.length() != 0)
arr.add(sb.toString());
sb.delete(0, sb.length());
}
}
StringBuilder ans = new StringBuilder();
for (int i = arr.size() - 1; i >= 0; i--) {
ans.append(arr.get(i));
if (i != 0)
ans.append(' ');
}
return ans.toString();
}
}
参考代码
class Solution {//使用语言特性
public String reverseWords(String s) {
// 除去开头和末尾的空白字符
s = s.trim();
// 正则匹配连续的空白字符作为分隔符分割
List<String> wordList = Arrays.asList(s.split("\\s+"));
Collections.reverse(wordList);
return String.join(" ", wordList);
}
}
链接: 答案解析来源
网友评论