- 反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
示例 1:
输入:s = [“h”,“e”,“l”,“l”,“o”]
输出:[“o”,“l”,“l”,“e”,“h”]
示例 2:
输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]
输出:[“h”,“a”,“n”,“n”,“a”,“H”]
过程解析:
采用双指针的思想
class Solution {
public void reverseString(char[] s) {
if(s==null||s.length==0){
return;
}
int left=0,right=s.length-1;
while(left
结果:
执行用时:1 ms, 在所有 Java 提交中击败了95.62%的用户
内存消耗:44.7 MB, 在所有 Java 提交中击败了89.28%的用户
通过测试用例:477 / 477
- 反转字符串中的单词 III
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例:
输入:“Let’s take LeetCode contest”
输出:“s’teL ekat edoCteeL tsetnoc”
过程解析:
class Solution {
public String reverseWords(String s) {
//先将字符串转为字符串数组
char[] arr=s.toCharArray();
//新建一个数组,用来存放逆序的单词
char[] word=new char[arr.length];
int i=0,j=0;
int k=0;// 下一次往新数组中存储单词时的起始位置(k是在数组arr中)
while(i=k;t--){
//将单词逆序存放
word[j++]=arr[t];
}
word[j]=' '; //在添加的逆序单词后面加一个空字符
j++;
k=i+1;
}
i++;
}
//由于最后一个单词后面没有空字符,所以拿出来单独存储
for(int t=i-1;t>=k;t--){
word[j++]=arr[t];
}
//将数组再转为字符串
String str=String.valueOf(word);
return str;
}
}
结果:
执行用时:2 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:38.4 MB, 在所有 Java 提交中击败了98.78%的用户
通过测试用例:29 / 29



