Leetcode Reverse Words in a String
2016-07-06 00:49
330 查看
Given an input string, reverse the string word by word.
For example,
Given s = "
return "
Update (2015-02-12):
For C programmers: Try to solve it in-place in O(1) space.
Difficulty: Medium
public class Solution {
public StringBuilder reverseHelper(StringBuilder sb, int start, int end){
if(start > end){
return new StringBuilder("");
}
StringBuilder res = new StringBuilder();
for(int i = end; i >= start; i--){
res.append(sb.charAt(i));
}
return res;
}
public String reverseWords(String s) {
if(s.length() == 0) return "";
StringBuilder sb = new StringBuilder(s);
StringBuilder res = new StringBuilder();
while(sb.length() > 0 &&sb.charAt(0) == ' ') sb.deleteCharAt(0);
while(sb.length() > 0 &&sb.charAt(sb.length() -1) == ' ') sb.deleteCharAt(sb.length() -1);
int start = 0, end = 0;
while(start < sb.length() && end < sb.length()){
while(start < sb.length() && sb.charAt(start) == ' '){
start++;
}
end = start;
while(end < sb.length() && sb.charAt(end) != ' '){
end++;
}
res.append(reverseHelper(sb, start, end - 1));
res.append(" ");
start = end;
}
if(res.length() > 0 && res.charAt(res.length() - 1) == ' ')
res.deleteCharAt(res.length() - 1);
return res.reverse().toString();
}
}
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.
Difficulty: Medium
public class Solution {
public StringBuilder reverseHelper(StringBuilder sb, int start, int end){
if(start > end){
return new StringBuilder("");
}
StringBuilder res = new StringBuilder();
for(int i = end; i >= start; i--){
res.append(sb.charAt(i));
}
return res;
}
public String reverseWords(String s) {
if(s.length() == 0) return "";
StringBuilder sb = new StringBuilder(s);
StringBuilder res = new StringBuilder();
while(sb.length() > 0 &&sb.charAt(0) == ' ') sb.deleteCharAt(0);
while(sb.length() > 0 &&sb.charAt(sb.length() -1) == ' ') sb.deleteCharAt(sb.length() -1);
int start = 0, end = 0;
while(start < sb.length() && end < sb.length()){
while(start < sb.length() && sb.charAt(start) == ' '){
start++;
}
end = start;
while(end < sb.length() && sb.charAt(end) != ' '){
end++;
}
res.append(reverseHelper(sb, start, end - 1));
res.append(" ");
start = end;
}
if(res.length() > 0 && res.charAt(res.length() - 1) == ' ')
res.deleteCharAt(res.length() - 1);
return res.reverse().toString();
}
}
相关文章推荐
- ELK集群故障处理
- 数据结构与算法(每天更新)
- Leetcode Add Two Numbers
- HDU 5289 Assignment(线段树)
- 一种c#深拷贝方式完胜java深拷贝(实现上的对比)
- CMake 介绍 & CMakeList.txt
- 老毛桃U盘启动盘制作工具V20140501完美贡献版
- 老毛桃U盘启动盘制作工具V20140501完美贡献版
- 稳定排序和不稳定排序
- 102. Binary Tree Level Order Traversal
- django-模板初探
- Mac OS X系统下编译运行C代码
- 前端案例--纯CSS3美化复选框
- 类和成员变量
- Java编程思想之并发
- Spring AOP 简介以及简单用法
- RC4密码算法实现
- 集合类Collection
- SpringMVC学习系列(4) 之 数据绑定-1
- ajax(一)