如果字母的數量和數字的數量之差爲 0 或 1,則可以 reformat。注意如果之差爲 1,那麼多的那種字符應該先寫。
/**
Runtime: 2 ms, faster than 98.95% of Java online submissions for Reformat The String.
Memory Usage: 39.5 MB, less than 100.00% of Java online submissions for Reformat The String.
8、*/
class Solution {
public String reformat(String s) {
if (s == null || s.length() == 0) {
return "";
}
int countOfDigit = 0;
int countOfCharacter = 0;
char[] digits = new char[s.length()];
char[] characters = new char[s.length()];
char[] chars = s.toCharArray();
for (int i=0; i<chars.length; i++) {
char c = chars[i];
if (c >= 'a' && c<= 'z') {
characters[countOfCharacter] = c;
countOfCharacter++;
continue;
}
digits[countOfDigit] = c;
countOfDigit++;
}
if (Math.abs(countOfCharacter - countOfDigit) > 1) {
return "";
}
StringBuilder result = new StringBuilder();
if (countOfDigit > countOfCharacter) {
for (int i=0; i<Math.min(countOfDigit, countOfCharacter); i++) {
result.append(digits[i]);
result.append(characters[i]);
}
result.append(digits[countOfDigit-1]);
} else if (countOfDigit < countOfCharacter) {
for (int i=0; i<Math.min(countOfDigit, countOfCharacter); i++) {
result.append(characters[i]);
result.append(digits[i]);
}
result.append(characters[countOfCharacter-1]);
} else {
for (int i=0; i<Math.min(countOfDigit, countOfCharacter); i++) {
result.append(characters[i]);
result.append(digits[i]);
}
}
return result.toString();
}
}