Given a string which contains only letters. Sort it by lower case first and upper case second.
Example
Example 1:
Input: "abAcD"
Output: "acbAD"
Example 2:
Input: "ABC"
Output: "ABC"
Challenge
Do it in one-pass and in-place.
Notice
It's NOT necessary to keep the original order of lower-case letters and upper case letters.
Code (Java):public class Solution {
/*
* @param chars: The letter array you should sort by Case
* @return: nothing
*/
public void sortLetters(char[] chars) {
if (chars == null || chars.length < 2) {
return;
}
int start = 0;
int end = chars.length - 1;
while (start <= end) {
while (start <= end && Character.isLowerCase(chars[start])) {
start++;
}
while (start <= end && Character.isUpperCase(chars[end])) {
end--;
}
if (start <= end) {
swap(chars, start, end);
start++;
end--;
}
}
}
private void swap(char[] chars, int i, int j) {
char temp = chars[i];
chars[i] = chars[j];
chars[j] = temp;
}
}
No comments:
Post a Comment