描述
给定一个只包含字母的字符串,按照先小写字母后大写字母的顺序进行排序。
小写字母或者大写字母他们之间不一定要保持在原始字符串中的相对位置。
您在真实的面试中是否遇到过这个题? 是
样例
给出"abAcD",一个可能的答案为"acbAD"
挑战
在原地扫描一遍完成
思路:
双指针
代码:
class Solution {
public:
/*
* @param chars: The letter array you should sort by Case
* @return: nothing
*/
void sortLetters(string &chars) {
// write your code here
int left=0;
int right=chars.size()-1;
while(left<right)
{
if(isupper(chars[left]))
{
if(islower(chars[right]))
swap(&chars[left],&chars[right]);
else right--;
}
else left++;
}
}
void swap(char*a,char*b)
{
int temp=*a;
*a=*b;
*b=temp;
}
};