LeetCode: 翻转字符串里的单词
2019-02-17 本文已影响21人
一萍之春
翻转字符串里的单词
题目叙述
给定一个字符串,逐个翻转字符串中的每个单词。
示例:
输入: "the sky is blue",
输出: "blue is sky the".
说明:
- 无空格字符构成一个单词。
- 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
- 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
解题思路:
这一道题站在Java的角度上来说比较简单实现,也就是将原字符串根据" "开始进行分割成为一个字符串数组,开始对数组从后往前进行遍历,因为在单词可能有多个" ",因此在字符串进行调用trim()函数(它的作用也就是将字符串中的头和尾部的空格去掉),之后如果字符串不为空说明它是一个单词添加进结果集中即可,C语言实现的可以自己实现一下这个方法就好了。按" "分割也可以使用C语言自己实现就好了。这一道题比较简单。时间复杂度是O(n)。
代码实现:
public class Solution {
public String reverseWords(String s) {
StringBuffer res=new StringBuffer();
if (s==null||s.trim().length()==0){
return res.toString();
}
List<String> list=new ArrayList<>();
String[] strs=s.split(" ");
for (int i=strs.length-1;i>-1;--i){
if (strs[i].trim().length()>0){
list.add(strs[i].trim());
}
}
res.append(list.get(0));
for (int i=1;i<list.size();++i){
res.append(" ");
res.append(list.get(i));
}
return res.toString();
}
}