Given an input string, reverse the string word by word.

Example 1:

Input: "the sky is blue"
Output: "blue is sky the"

Example 2:

Input: "  hello world!  "
Output: "world! hello"
Explanation: Your reversed string should not contain leading or trailing spaces. Solution 1:
class Solution {
public String reverseWords(String s) {
if (s == null || s.length() == 0) {
return "";
}
char[] charArr = s.toCharArray();
swap(charArr, 0, s.length() - 1);
int i = 0, start = 0;
while (i < s.length()) {
if (i == 0 || charArr[i - 1] == ' ') {
start = i;
} if (i == charArr.length - 1 || charArr[i + 1] == ' ') {
swap(charArr, start, i);
}
i += 1;
} // need to trim space inside
int slow = 0;
for (int j = 0; j < charArr.length; j++) {
if (charArr[j] == ' ' && (j == 0 || charArr[j - 1] == ' ')) {
continue;
}
charArr[slow++] = charArr[j];
}
return new String(charArr, 0, slow).trim();
} private void swap(char[] charArr, int i, int j) {
while (i < j) {
char tmp = charArr[i];
charArr[i] = charArr[j];
charArr[j] = tmp;
i += 1;
j -= 1;
}
}
}

Solution 2:

class Solution {
public String reverseWords(String s) {
if (s == null || s.length() == 0) {
return "";
}
String[] strArr = s.split("\\s+");
StringBuilder sb = new StringBuilder();
for (int i = strArr.length - 1; i >= 0; i--) {
sb.append(strArr[i] + " ");
}
return sb.toString().trim();
}
}

最新文章

  1. 《UML大战需求分析》阅读随笔(二)
  2. linux heartbeat v2/v3 的一点资料
  3. oracle一条sql语句统计充值表中今天,昨天,前天三天充值记录
  4. Hive(六):HQL DDL
  5. Odoo Qweb报表css丢失问题
  6. SharePoint的安装配置
  7. [Node.js] Creating JWTs (JSON Web Tokens) in Node
  8. iOS开发UI篇——九宫格坐标计算
  9. Oracle Database Instant Client 11g 32位和64位 安装包发布
  10. linux yum安装mongodb
  11. UIAlertController 自定义输入框及KVO监听
  12. 【Android Developers Training】 55. 序言:高效显示位图
  13. 关于celery django django-celery版的搭配的报错问题及解决方法
  14. 实战DeviceIoControl 之二:获取软盘/硬盘/光盘的参数
  15. 搭建apache本地服务器&#183;Win
  16. Mysql 监控脚本
  17. vuex 子组件传值
  18. What is the $ symbol used for in JavaScript
  19. spring boot 整合redis --sea 方式1
  20. PHP 操作Mongodb 实例

热门文章

  1. POJ 2251:Dungeon Master
  2. 第22章—开启HTTPS
  3. xv6 系统调用
  4. 刷题32. Longest Valid Parentheses
  5. 直击JDD | 徐雷:智能化零售,以技术为驱动力的突破路径
  6. linux下springboot项目通过jetty发布war包应用
  7. What is the maximum length of a URL in different browsers?
  8. javaweb学习——JDBC(五)
  9. PAT Advanced 1127 ZigZagging on a Tree (30) [中序后序建树,层序遍历]
  10. UML-操作契约是什么?