大佬,牛!!!
java代码
class Solution {
public String reformat(String s) {
int sumDigit = 0;
for (int i = 0; i < s.length(); i++) {
if (Character.isDigit(s.charAt(i))) {
sumDigit++;
}
}
int sumAlpha = s.length() - sumDigit;
if (Math.abs(sumDigit - sumAlpha) > 1) {
return "";
}
boolean flag = sumDigit > sumAlpha;// flag假设是数字,所以偶数位置都是数字(偶数位置是从0开始的)
char[] arr = s.toCharArray();
for (int i = 0, j = 1; i < s.length(); i += 2) {// 看i位置是不是正确的(i一直在偶数位置)
if (Character.isDigit(arr[i]) != flag) {// i不是数字,才能进if,偶数位不是数字
while (Character.isDigit(arr[j]) != flag) {// j最后会落在奇数位置是数字的地方
j += 2;
}
swap(arr, i, j);// 两个不对的地方交换,则都变成了对的
}
}
return new String(arr);
}
public void swap(char[] arr, int i, int j) {
char c = arr[i];
arr[i] = arr[j];
arr[j] = c;
}
}