import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param number string字符串
* @return string字符串
*/
public String change(String number) {
char[] chars = number.toCharArray();
int left = 0;
int right = chars.length - 1;
while (left < right) {
while (chars[left] % 2 == 1) {
left++;
}
while (chars[right] % 2 == 1) {
right--;
}
if (left < right) { //这里的left<right不能少,要确保当前跳过了奇数后的两个指针仍满足大小关系
char temp = chars[left];
chars[left] = chars[right];
chars[right] = temp;
left++;
right--;
}
}
return new String(chars);
}
}
采用双指针的思想,left指针指向字符串首,right指针指向字符串尾
当遇到奇数时跳过,
当找到两个偶数的时候就进行str[1]、str[r]的交换
交换后让指针left++,right-- 然后重复上述操作,
直到left right相遇时返回最终结果

京公网安备 11010502036488号