首页 > 代码库 > Reverse Words in a String
Reverse Words in a String
源自leetcode上的一道题。题目为:
Reverse Words in a String
Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
目前被接受的Java代码如下:
public class Solution { public String reverseWords(String s) { //delete spaces before and after string String tmp = s.trim(); //if no space exists, return original string if(s.indexOf(" ") == -1) { return s; } //if only spaces exist, return "" if(tmp == "") { return tmp; } //construct a string array has spaceCount+1 elements to store string elements String[] strArray = tmp.split("\\s+"); //construct final string in reverse sequence StringBuilder result = new StringBuilder(); result.append(strArray[strArray.length-1].trim()); for(int i = strArray.length-2; i >= 0; i--) { if(strArray[i] != null) { result.append(" " + strArray[i]); } } return result.toString(); }}
其中有几个关键问题要注意:
1. 如果s全是空格的情况下,经过trim之后应该是"",此时不应该返回s,而应该返回“”;也就是说很容易遗漏tmp == ""的情况;
2. 在String类中的split函数中,参数\\s表示空格、回车、换行等空白符;+号表示一个或多个;因此根据多个空格符拆分字符串需要用到\\s+;
3. StringBuilder类的append函数相比String类的+ operator效率高很多;
4. 先append最后一个单词,然后开始循环append空格和接下来的单词;
5. 切记toString();
主要用到的String类函数有trim(), indexOf(), split()。split函数需要用到正则表达式,用到的时候再深入学习。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。