Given an input string, reverse the string word by word.
For example,
Given s = "
return "
Given s = "
the sky is blue
",return "
blue is sky the
".
解题思路:
先用string.split()把string分解成一个个的字符, 把字符存放在一个list里面. 然后从后往前取字符(要加上空格)添加到一个新的string里.
要注意可能以前的string里面有很多空格 所以在list里面取字符时候要判定如果是空格就舍弃.
时间上split操作是O(N),再一次扫描获得结果,也是O(N)。空间上使用了一个String[] 和StringBuffer,也是O(N)
public class Solution { public String reverseWords(String s) { if (s == null || s.length() == 0){ return s; } s.trim(); String [] str = s.split(" "); StringBuilder tem = new StringBuilder(); for (int i = str.length - 1; i >= 0; i--){ if (str[i].length() == 0){ continue; } tem.append(str[i] + " "); } return tem.toString().trim();//因为每次都有加空格 所以tem最结尾有一个空格 } // 需要trim来去掉空格 }
没有评论:
发表评论