String - 151. Reverse Words in a String
时间:2022-07-25
本文章向大家介绍String - 151. Reverse Words in a String,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
151. Reverse Words in a String
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.
Example 3:
Input: "a good example" **Output: **"example good a" Explanation: You need to reduce multiple spaces between two words to a single space in the reversed string.
Note:
- A word is defined as a sequence of non-space characters.
- Input string may contain leading or trailing spaces. However, your reversed string should not contain leading or trailing spaces.
- You need to reduce multiple spaces between two words to a single space in the reversed string.
思路:
核心思路就是找到两个空格之间的单词,然后生成这个新单词。正则表达式消耗了一些时间,用递归之后运行时间降低了不少。
代码:
java:
class Solution {
/*public String reverseWords(String s) {
if (s == null || s.length() == 0) return "";
StringBuilder sb = new StringBuilder();
String[] words = s.trim().split("\s+");
for (int i = words.length - 1; i >= 0; i--)
sb.append(words[i] + " ");
return sb.toString().trim();
}*/
// 递归
public String reverseWords(String s) {
return reverse(0,s).toString();
}
private StringBuilder reverse(int index, String s) {
// 1.找到第一个非空格.
while (index < s.length() && s.charAt(index) == ' ') index++;
// 2.后面全是空格,就返回一个空对象
if(index == s.length()) return new StringBuilder();
// 3.找到下一个空格.
int start = index;
index = s.indexOf(' ', start);
// 4.后面没有空格,就返回后面的字符串
if (index == -1) return new StringBuilder(s.substring(start));
// 5.后面还有空格,就继续递归
调用
StringBuilder remainStr = reverse(index + 1, s);
// 根据返回的sb对象,返回给上一层调用
return remainStr.length() == 0 ?
// 如果StirngBuilder长度为0,就说明后面全是空格,直接返回这一层调用的这个word
new StringBuilder(s.substring(start, index)):
// 如果StringBuilder长度不为零,就说明后面要么是原字符串最后一个单词,要么是下层调用返回的StringBuilder,
// 就加空格再加上本层调用的单词,然后继续返回给上层。
remainStr.append(" ").append(s.substring(start, index));
}
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法