给定一个只包含字母的字符串,按照先小写字母后大写字母的顺序进行排序。
注意事项
小写字母或者大写字母他们之间不一定要保持在原始字符串中的相对位置。
样例
给出”abAcD”,一个可能的答案为”acbAD”
挑战
在原地扫描一遍完成
Given a string which contains only letters. Sort it by lower case first and upper case second.
Notice
It’s NOT necessary to keep the original order of lower-case letters and upper case letters.
Example
For “abAcD”, a reasonable answer is “acbAD”
Challenge
Do it in one-pass and in-place.
public class Solution {
/**
*@param chars: The letter array you should sort by Case
*@return: void
*/
public void sortLetters(char[] chars) {
if(null == chars || chars.length == 0) return;
int i = 0, j = chars.length-1;
while(i < j) {
while(i < j && chars[i] >= 'a' && chars[i] <= 'z') {
i++;
}
while(i < j && chars[j] >= 'A' && chars[j] <= 'Z') {
j--;
}
if(i < j) {
char temp = chars[i];
chars[i] = chars[j];
chars[j] = temp;
}
}
}
}