Leetcode 557. 反转字符串中的单词 III
简单
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例:
输入:"Let's take LeetCode contest" 输出:"s'teL ekat edoCteeL tsetnoc"
思路:找到每个单词的前后位置,然后将它反转顺序
static String reverseWords(String s) {
char[] c = s.toCharArray();
int left = 0;
int right = 0;
while (right < c.length) {
if (right == c.length - 1) {//如果走到最后一个元素
reserve(c, left, right);
}
if (c[right] != ' ') {
right++;
} else {
reserve(c, left, right - 1);
left = right + 1;//从每一组的后面开始
right += 2;//下一个元素
}
}
return new String(c);
}
static void reserve(char[] c, int left, int right) {//双指针反转元素
while (left < right) {
char tmp = c[left];
c[left++] = c[right];
c[right--] = tmp;
}
}
//解法二
static String reverseWords(String s) {
String[] split = s.split(" ");
for (int i=0; i<split.length; i++) {
split[i] = new StringBuffer(split[i]).reverse().toString();
}
return String.join(" ", split);
}

浙公网安备 33010602011771号