【LintCode】Reverse Words in a String 翻转字符串
2016-09-05 13:48
423 查看
描述:给定一个字符串,逐个翻转字符串中的每个单词。
说明
单词的构成:无空格字母构成一个单词
输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括
如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个
样例
给出s = "the sky is blue",返回"blue is sky the"
基本思路:
1)第一趟遍历
将每个单词翻转,且去掉连续空格中多余的空格(两端空格早已去掉)。
2)第二趟遍历
将整个字符串完全翻转。
代码:
说明
单词的构成:无空格字母构成一个单词
输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括
如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个
样例
给出s = "the sky is blue",返回"blue is sky the"
基本思路:
1)第一趟遍历
将每个单词翻转,且去掉连续空格中多余的空格(两端空格早已去掉)。
2)第二趟遍历
将整个字符串完全翻转。
代码:
<span style="font-size:18px;">public class Solution { /** * @param s : A string * @return : A string */ public String reverseWords(String s) { // write your code //去掉首尾空格 StringBuffer sb=new StringBuffer(s.trim()); //第一趟遍历 将每个单词翻转,且去掉连续空格中多余的空格(两端空格早已去掉)。 for(int i=0;i<sb.length();){ //删除多余空格 if(i<sb.length()-1&&sb.charAt(i)==' '&&(sb.charAt(i)==sb.charAt(i+1))){ //deleteCharAt(int index); sb.deleteCharAt(i+1); i++; continue; } //将单词翻转 else if(sb.charAt(i)!=' '){ int j=i; //找到该单词最后一个字母 while(j<sb.length()&&sb.charAt(j)!=' '){ j++; } //将该单词进行翻转 //setCharAt(int index,char ch); for(int k=0;k<(j-i)/2;k++){ char c=sb.charAt(k+i); sb.setCharAt(k+i,sb.charAt(j-1-k)); sb.setCharAt(j-1-k,c); } //将下标移动到(当前单词后的空格)或下一个单词的首字母处 i=j+1; } //一个空格 else { i++; } } //第二趟遍历 将整个字符串完全翻转。 for(int i=0;i<sb.length()/2;i++){ char c = sb.charAt(i); sb.setCharAt(i,sb.charAt(sb.length()-1-i)); //这里不能直接把sb.charAt(i)当做参数写到setCharAt中,必须在前面先对i位置的字符进行获取(保存),因为上面的赋值操作 //对i位置的字符数据进行了覆盖 sb.setCharAt(sb.length()-1-i,c); } return sb.toString(); } } </span>
相关文章推荐
- 【LintCode】Reverse Words in a String 翻转字符串
- [LintCode] Reverse Words in a String 翻转字符串中的单词
- 字符串-Reverse Words in a String(翻转字符串)
- LeetCode OJ 之 Reverse Words in a String (翻转字符串的单词)
- Reverse Words in a String 翻转一个字符串里的单词顺序 @LeetCode
- lintcode 容易题:Reverse Words in a String 翻转字符串
- 151.leetcode Reverse Words in a String(medium)[字符串分词翻转]
- leetcode151-Reverse Words in a String(翻转字符串单词的位置)
- Reverse Words in a String III 翻转字符串中的单词之三
- [LeetCode] Reverse Words in a String III 翻转字符串中的单词之三
- [LeetCode] Reverse Words in a String 翻转字符串中的单词
- 151. 翻转字符串里的单词(Reverse Words in a String)
- LeetCode刷题:Reverse Words in a String(翻转字符串中的单词)
- Reverse Words in a String 翻转字符串
- LeetCode:151_Reverse Words in a String | 字符串中单词的逆反 | Medium
- [Lintcode]Reverse Words in a String
- 【LeetCode-面试算法经典-Java实现】【151-Reverse Words in a String(反转字符串中的单词)】
- 翻转单词顺序 Reverse Words in a String
- Reverse Word in a String(翻转字符串)&字符串最后一个单词的长度
- lintcode-easy-Reverse Words in a String