leetcode之反转给定字符串中的单词
2014-07-17 15:17
232 查看
原题出自:
Given an input string, reverse the string word by word.
For example,
Given s = "
return "
Clarification:
What constitutes a word?
A sequence of non-space characters constitutes a word.
Could the input string contain leading or trailing spaces?
Yes. However, your reversed string should not contain leading or trailing spaces.
How about multiple spaces between two words?
Reduce them to a single space in the reversed string.
我的解答:
总结:
1.StringBuffer类的deleteCharAt(int index),用于删除字符串中下标为index的字符。
2.String类的" ".split(" ")的返回值为0,但"a b".split(" ")的返回值为3,其中切割后的第二个字符串为"",可以理解为split之前先进行trim(),然后再切词,其中两个空格相连的位置会切出一个""串。
3.反转字符串之时,若字符串长度为2x,则按上面的方式遍历字符串刚好到x,但不包括x。当字符串长为2x+1时,也只要x就好。
LeetCode Online Judge
Given an input string, reverse the string word by word.For example,
Given s = "
the sky is blue",
return "
blue is sky the".
Clarification:
What constitutes a word?
A sequence of non-space characters constitutes a word.
Could the input string contain leading or trailing spaces?
Yes. However, your reversed string should not contain leading or trailing spaces.
How about multiple spaces between two words?
Reduce them to a single space in the reversed string.
我的解答:
public class Solution { public String reverseWords(String s) { //clear redundant spaces StringBuffer sb = new StringBuffer(s.trim()); for(int i=1;i < sb.length() - 1;i++) if(sb.charAt(i-1) == ' ' && sb.charAt(i) == ' '){ sb.deleteCharAt(i-1); i--; } //cut words String[] sa = sb.toString().split(" "); if(sa.length == 0) return ""; //reverse word by word int len = sa.length; String tmp = null; for(int i=0;i < len / 2;i++){ tmp = sa[i]; sa[i] = sa[(len - 1) - i]; sa[(len - 1) - i] = tmp; } //recombine string String result = new String(sa[0]); for(int i=1;i < sa.length;i++) result += " " + sa[i]; return result; } }
总结:
1.StringBuffer类的deleteCharAt(int index),用于删除字符串中下标为index的字符。
2.String类的" ".split(" ")的返回值为0,但"a b".split(" ")的返回值为3,其中切割后的第二个字符串为"",可以理解为split之前先进行trim(),然后再切词,其中两个空格相连的位置会切出一个""串。
3.反转字符串之时,若字符串长度为2x,则按上面的方式遍历字符串刚好到x,但不包括x。当字符串长为2x+1时,也只要x就好。
相关文章推荐
- 【LeetCode】Reverse Words in a String 反转字符串中的单词
- leetcode Reverse Words in a String III 反转字符串中的单词
- 【LeetCode-面试算法经典-Java实现】【151-Reverse Words in a String(反转字符串中的单词)】
- LeetCode按单词反转字符串
- leetcode第一题 将一个字符串的单词顺序反转输出
- LeetCode 557. Reverse Words in a String III (反转字符串中的单词 III)
- 每天一道LeetCode-----将字符串切分成若干单词,使得每个单词都在给定的字典中,求出所有的切分结果
- LeetCode 557. 反转字符串中的单词 III
- 2015蘑菇街笔试题——给定一个英文单词的字符串,按照英文单词的顺序反转输出
- 给定一个字符串s和一个单词dict的字典,确定s是否可以分割成一个或多个字典单词的空格分隔的序列。 s ="leetcode", dict =["leet", "code"].
- LeetCode | Reverse Words in a String(字符串中的单词序反转)
- 字符串单词反转
- 求给定字符串中的单词数
- 字符串反转,单词内容不变
- 字符串中单词反转
- C# 按照单词反转字符串
- 按单词反转字符串
- 以单词为单位,对字符串进行反转
- alg: 反转字符串中的单词顺序
- 反转字符串中的单词顺序