344. 反转字符串

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。

  1. 示例 1:

    1
    2
    输入:["h","e","l","l","o"]
    输出:["o","l","l","e","h"]
  2. 示例 2:

    1
    2
    输入:["H","a","n","n","a","h"]
    输出:["h","a","n","n","a","H"]

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public void reverseString(char[] s) {
int l = 0;
int r = s.length-1;

while(l < r){
char temp = s[l];
s[l++] = s[r];
s[r--] = temp;

}
}
}

557. 反转字符串中的单词 III

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

  • 示例:

    1
    2
    输入:"Let's take LeetCode contest"
    输出:"s'teL ekat edoCteeL tsetnoc"
  • 提示:

    在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。

题 解

1
2
3
4
// 思路:先全翻转 再分段翻转
var reverseWords = function(a) {
return a.split('').reverse().join('').split(' ').reverse().join(' ');
};