Day13_剑指Offer
Day13_剑指Offer
加油,加油,再加油~~~
package com.sorrymaker.day3713;
import org.junit.Test;
/**输入一个英文句子,翻转句子中单词的顺序,
* 但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。
* 例如输入字符串"I am a student. ",则输出"student. a am I"。
* @Author nextGame
* @Date 2021/8/24 21:09
* @Version 1.0
*/
public class ReverseWords {
@Test
public void test(){
reverseWords(" hello world!");
}
public String reverseWords(String s) {
// 删除首尾空格
s = s.trim();
int j = s.length() - 1, i = j;
StringBuilder res = new StringBuilder();
while(i >= 0) {
// 搜索首个空格,因为两个单词之间,有空格,
while(i >= 0 && s.charAt(i) != ' ') {
i--;
}
// 添加单词
//搜索到空格后。就是i+1 --- j+1之间的 char ,组成的就是一个单词
res.append(s.substring(i + 1, j + 1) + " ");
// 跳过单词间空格
while(i >= 0 && s.charAt(i) == ' ') {
i--;
}
// j 指向下个单词的尾字符
j = i;
}
// 转化为字符串并返回
return res.toString().trim();
}
}

浙公网安备 33010602011771号