描述
给定一个只包含字母的字符串,按照先小写字母后大写字母的顺序进行排序。
小写字母或者大写字母他们之间不一定要保持在原始字符串中的相对位置。
样例
给出"abAcD",一个可能的答案为"acbAD"
挑战
在原地扫描一遍完成
思路: 很像快速排序的那个partition函数,很简单,一个头指针 pre ,一个尾指针last,每次遍历,pre指针找到大写的,
last指针找到小写的,然后交换下,迭代至两指针相遇。
Java实现代码:
public void sortLetters(char[] chars) {
// write your code here
int pre = 0, last = chars.length-1;
while (pre<last){
while (pre<last&&chars[pre]>=97){
pre++;
}
swap(chars, pre, last);
while (pre<last&&chars[last]<97){
last--;
}
swap(chars, pre, last);
}
}
public void swap(char[] arr, int i, int j){
char temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}