[LeetCode]Reverse Words in a String
来源:互联网 发布:js cron 表达式生成器 编辑:程序博客网 时间:2024/05/19 13:57
题目
Given an input string, reverse the string word by word.
For example,
Given s = “the sky is blue”,
return “blue is sky the”.
思路
整体思路,反转每个词,再反转整个句子。
方法1:考虑到给定s中会有一些多余空格,即开头和结尾的空格以及中间多个连续空格,第一步就是去除这些多余空格,确保词与词之间只有一个空格;第二步将每个词倒转,最后再将整个句子倒转。这里采用数组实现。
方法2(推荐!): 利用两个stack,一个表示单词,一个表示句子。当遇到非空格字符时放入单词stack;当遇到空格时将单词stack中的字符压入句子stack中(注意:单词此时已经逆序一次),然后仅添加一个空格。最后将句子stack依次输出,此时句子逆序。这里利用了stack”先进后出”的特性。
代码
方法1:
public class Solution { public static String reserveWord(String s) { char[] chars = removeDuplicateSpace(s); int begin = 0; int end = 0; for (; end < chars.length; end++) { if (chars[end] == ' ') { swap(chars, begin, end - 1); begin = end + 1; end = begin; } } swap(chars,begin,end-1); swap(chars,0,chars.length-1); return new String(chars); } private static void swap(char[] chars, int begin, int end) { char temp; while (begin < end) { temp = chars[begin]; chars[begin] = chars[end]; chars[end] = temp; begin++; end--; } } private static char[] removeDuplicateSpace(String s) { //一个或多个空格 正则 String regex = "\\s+"; String resultStr = s.trim().replaceAll(regex," "); System.out.println(resultStr); return resultStr.toCharArray(); }}
方法2:
public class Solution { public static String reserveWord(String s) { Stack<Character> wordStack = new Stack(); Stack<Character> sentenceStack = new Stack(); for (int i = 0; i < s.length(); i++) { if(s.charAt(i) == ' '&wordStack.size() > 0) { transfer(wordStack,sentenceStack); continue; } if(s.charAt(i) != ' ') { wordStack.push(s.charAt(i)); } } StringBuilder sb = new StringBuilder(); while(sentenceStack.size() > 0){ sb.append(sentenceStack.pop()); } return sb.toString(); } private static void transfer(Stack<Character> wordStack, Stack<Character> sentenceStack) { sentenceStack.push(' '); while (wordStack.size() > 0) { sentenceStack.push(wordStack.pop()); } }}
阅读全文
0 0
- Leetcode - string - Reverse Words in a String
- Reverse words in a String leetcode
- [LeetCode]Reverse Words in a String
- 【LeetCode】Reverse Words in a String
- Reverse Words in a String (LeetCode)
- LeetCode Reverse Words in a String Total
- LeetCode(151)Reverse Words in a String
- Reverse Words in a String -- LeetCode
- leetcode Reverse Words in a String
- LeetCode OJ:Reverse Words in a String
- LeetCode Reverse Words in a String
- 【LeetCode】Reverse Words in a String
- [Leetcode] Reverse Words in a String
- Reverse Words in a String[LeetCode]
- LeetCode OJ :Reverse Words in a String
- Leetcode: Reverse Words in a String
- 【LeetCode】Reverse Words in a String
- 【LeetCode】Reverse Words in a String
- CS0016: 未能写入输出文件“c:\WINDOWS\Microsoft.NET\Framework\.。。”--“拒绝访问
- 作为It界的菜鸟,大家多多关照
- UNIX命令行快速入门3
- 多层感知机MLP
- 记一次网站访问速度优化点查找过程
- [LeetCode]Reverse Words in a String
- 用思维导图提高阅读效率
- 阮一峰的es6
- hive的几种文件格式
- alpha_blend
- 系列:iOS开发-framework的制作与使用
- 静态代码块,构造代码块,构造方法执行顺序
- android加固
- 【中间件】——java企业版规范与中间件