LeetCode 151. Reverse Words in a String(反转单词)
来源:互联网 发布:人工智能的产品有哪些 编辑:程序博客网 时间:2024/05/16 10:24
原题网址:https://leetcode.com/problems/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
".
Update (2015-02-12):
For C programmers: Try to solve it in-place in O(1) space.
click to show clarification.
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) { if (null == s) return null; StringBuilder sb = new StringBuilder(); int pos = s.length()-1; for(int i=s.length()-1; i>=0; i--) { if (s.charAt(i) == ' ') { if (i < pos) { if (sb.length() > 0) sb.append(" "); sb.append(s.substring(i+1, pos+1)); } pos = i-1; } } if (0 <= pos) { if (sb.length() > 0) sb.append(" "); sb.append(s.substring(0, pos+1)); } return sb.toString(); }}
方法二:先全部左右反转,然后逐个单词再反转一次,注意好多坑。
public class Solution { public String reverseWords(String s) { char[] sa = s.toCharArray(); int size = 0; for(int i=0; i<sa.length; i++) { if (sa[i] != ' ' || (size>0 && sa[i] == ' ' && sa[size-1] != ' ')) sa[size++] = sa[i]; } if (size > 0 && sa[size-1] == ' ') size --; char[] ra = new char[size]; System.arraycopy(sa, 0, ra, 0, size); for(int i=0, j=ra.length-1; i<j; i++, j--) { char t = ra[i]; ra[i] = ra[j]; ra[j] = t; } int from = 0; for(int i=0; i<=ra.length; i++) { if (i==ra.length || ra[i] == ' ') { for(int l=from, r=i-1; l<r; l++, r--) { char t = ra[l]; ra[l] = ra[r]; ra[r] = t; } from = i+1; } } return new String(ra); }}
0 0
- LeetCode 151. Reverse Words in a String(反转单词)
- [LeetCode]Reverse Words in a String-反转单词
- [Leetcode] reverse words in a string 反转单词
- LeetCode 186. Reverse Words in a String II(反转单词)
- LeetCode 557 Reverse Words in a String III(反转字符串中的单词3)
- Reverse Words in a String 字符串中单词反转
- Reverse Words in a String 反转单词顺序
- leetcode Reverse Words in a String III 反转字符串中的单词
- 【LeetCode-面试算法经典-Java实现】【151-Reverse Words in a String(反转字符串中的单词)】
- LeetCode Reverse Words in a String(反转字符串)
- LeetCode Reverse Words in a String(反转字符串)
- 字符串反转 reverse-words-in-a-string @LeetCode
- [leetcode, python] Reverse Words in a String 反转字符串
- 【LeetCode】{Reverse Words in a String} 单词间只留一个空格
- LeetCode 151. Reverse Words in a String
- LeetCode 151. Reverse Words in a String
- [LeetCode]151.Reverse Words in a String
- [leetcode] 151.Reverse Words in a String
- How HashTable(HashMap) works and preformance
- 【心得】要细心,思维要严谨,养成良好的代码习惯
- 有关网络编程的一些面试
- vim如何设置缩进以及行号
- Android开发之使用和风天气API遇到的问题及解决
- LeetCode 151. Reverse Words in a String(反转单词)
- java 变量的定义在程序中是任意的
- 0x01虚函数分析
- hdu 5645(树状数组)
- MyBatis嵌套查询解析
- vs快捷键
- Hust oj 2005 排列问题(STL)
- 基于柔性数组和类型转换以及sendmsg的消息组装方法
- 百度地图 baiduMap(三) 移动轨迹