首页 > 代码库 > 151. Reverse Words in a String
151. 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
".
Solution1: 不使用任何functiion
昨天expedia面试自己把题意理解错了,没过之后还郁闷不已。今天重新做了一遍,发现如果限制各种function的话,很多corner case要考虑,改来改去花了好久。所以昨天没过还是自己实力所致,没什么好抱怨的。
思路:用stack读,碰到空格输出stack的数,用stringbuilder把字母连起来。但是有很多cornercase,比如" a ",因此用prev=‘ ’来记录之前是不是已经碰到一个空格了。如果是又读到一个新字母,就更新prev变成任何一个其他数来区别于空格。最后循环结束后要把stack清空,然后判断是不是会出现“a ", 把最后一个空格清空。感觉做的很麻烦。
public class Solution { public String reverseWords(String s) { Stack<Character> res=new Stack<Character>(); StringBuilder sb=new StringBuilder(); char prev=‘ ‘; for(int i=s.length()-1;i>=0;i--) { if(s.charAt(i)!=‘ ‘) { res.push(s.charAt(i)); } else { while(!res.isEmpty()) { sb.append(res.pop()); prev=0; } if(prev!=‘ ‘&&i!=0) { sb.append(" "); } prev=‘ ‘; } } while(!res.isEmpty()) { sb.append(res.pop()); } if(sb.length()>0&&sb.charAt(sb.length()-1)==‘ ‘) { sb.deleteCharAt(sb.length()-1); } return sb.toString(); }}
Solution2:
其他用function的之后做吧,会省事很多。这道破题估计也不会再遇上了。
151. Reverse Words in a String
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。