题目:sortLetters
要求:
给定一个只包含字母的字符串,按照先小写字母后大写字母的顺序进行排序。
注意事项
小写字母或者大写字母他们之间不一定要保持在原始字符串中的相对位置。
样例:
给出”abAcD”,一个可能的答案为”acbAD”
算法要求:
在原地扫描一遍完成
解题思路:
前后遍历,前面找大写,后面找小写,找到后交换位置即可。
算法如下:
void sortLetters(string &letters) {
// write your code here
int i = 0;
int j = letters.size() - 1;
while (i < j) {
while (islower(letters[i]) && i < j) {
i++;
}
while (isupper(letters[j]) && j > i) {
j--;
}
swap(letters[i], letters[j]);
}
}