提示
LintCode中的相关算法题实现代码,可以在我的GitHub中下载。
题目需求
描述
给定一个只包含字母的字符串,按照先小写字母后大写字母的顺序进行排序。
样例
给出"abAcD",一个可能的答案为"acbAD"
挑战
在原地扫描一遍完成
解题思路
利用快速排序,不过这里使用的哨兵是'a'
实现代码
class Solution {
public:
/*
* @param chars: The letter array you should sort by Case
* @return: nothing
*/
void sortLetters(string &chars) {
// write your code here
if(chars.size()==0) return;
int low=0;
int high=chars.size()-1;
char target='a';
char tmp;
while(low<high)
{
while(low<high&&chars[high]<target)
{
high--;
}
tmp=chars[high];
while(low<high&&chars[low]>='a')
{
low++;
}
chars[high]=chars[low];
chars[low]=tmp;
}
}
};