您的位置:首页 > 其它

Reverse Words in a String

2016-05-07 11:08 309 查看
题:

Givenaninputstring,reversethestringwordbyword.

Forexample,

Givens="
theskyisblue
",

return"
blueisskythe
".

题意:字符串反转(去除重复的空格)。

分析:
1,要求删除开头和结尾的多余空格。

2,如果两个单词之间有多余空格的话,也要删除。


一:两个指针,一个指针cur只顾着从右往左走,另一个指针wordEnd始终占据单词后面的那个空格,这样每次cur发现空格的时候substring(cur+1,wordEnd)就是该单词。需要注意的是,题目说得很明确,需要注意leading和trailing的空格要去掉,还有中间连续的空格需要变成一个,所以需要有判断条件wordEnd-1>cur,保证连续空格的情况下不会被写到字符串里面去,只有真正的单词出现的时候才需要append空格。

publicclassSolution{ publicStringreverseWords(Strings){ intwordEnd=s.length(); intcur=wordEnd-1; StringBuildersb=newStringBuilder(); while(cur>=0){ if(s.charAt(cur)==''){ if(wordEnd-1>cur){ if(sb.length()>0) sb.append(''); sb.append(s.substring(cur+1,wordEnd)); } wordEnd=cur; } cur--; } if(wordEnd-1>cur){ if(sb.length()>0) sb.append(''); sb.append(s.substring(0,wordEnd)); } returnsb.toString(); } }

二:利用stack

实现



publicstaticvoidmain(String[]args){
Stringstr="theskyisblue";
Stack<string>stack=newStack<>();

String[]strArray=str.split("");

for(Strings:strArray){
stack.push(s);
}

StringBuildersb=newStringBuilder();
while(!stack.empty()){
sb.append(stack.pop()).append("");
}

System.out.println(sb);
}

参考:http://blog.csdn.net/lanxu_yy/article/details/38827845


[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: