题目链接
解题思路
- 首先根据空格将字符串
s
分割成字符串数组ans
- 然后对
ans[i]
而言,先将其变成字符数组str
,然后使用双指针法
- 一个指针记录当前元素的下标
- 一个指针记录当前元素 对应的倒数元素的下标
- 因为一直数组长度,所有对应数组下标为
str.length- i - 1
- 最后再将每个
ans[i]
用空格连接起来,这就是答案
AC代码
class Solution {
public String reverseWords(String s) {
StringBuilder Ans = new StringBuilder();
String[] ans = s.split(" ");
for (String an : ans) {
char[] str = an.toCharArray();
char tmp = ' ';
for (int j = 0; j < str.length / 2; j++) {
tmp = str[j];
str[j] = str[str.length - j - 1];
str[str.length - j - 1] = tmp;
}
Ans.append(new String(str)).append(" ");
}
return Ans.toString().trim();
}
}
本地测试代码
package com.company;
public class Solution_557 {
public static String reverseWords(String s) {
StringBuilder Ans = new StringBuilder();
String[] ans = s.split(" ");
for (String an : ans) {
char[] str = an.toCharArray();
char tmp = ' ';
for (int j = 0; j < str.length / 2; j++) {
tmp = str[j];
str[j] = str[str.length - j - 1];
str[str.length - j - 1] = tmp;
}
Ans.append(new String(str)).append(" ");
}
return Ans.toString().trim();
}
public static void main(String[] args) {
System.out.println(reverseWords("Let's take LeetCode contest"));
}
}