反转字符串中的单词:给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时
时间: 2024-05-24 12:12:01 浏览: 164
保留单词之间的空格分隔符。
例如,输入:"Let's take LeetCode contest",输出:"s'teL ekat edoCteeL tsetnoc"。
解题思路:
1. 将字符串转换为字符数组,方便操作。
2. 使用双指针法,找到每个单词的起始位置和结束位置。
3. 对于每个单词,使用双指针法将其中的字符反转。
4. 返回反转后的字符串。
代码如下:
class Solution {
public String reverseWords(String s) {
char[] ch = s.toCharArray();
int n = ch.length;
int left = 0, right = 0;
while (right < n) {
// 找到单词的起始位置
while (right < n && ch[right] != ' ') {
right++;
}
// 对单词中的字符进行反转
reverse(ch, left, right - 1);
// 找到下一个单词的起始位置
left = right + 1;
right = left;
}
return new String(ch);
}
private void reverse(char[] ch, int left, int right) {
while (left < right) {
char temp = ch[left];
ch[left] = ch[right];
ch[right] = temp;
left++;
right--;
}
}
}
阅读全文