字符大小写排序
题目
给定一个只包含字母的字符串,按照先小写字母后大写字母的顺序进行排序。
注意事项
小写字母或者大写字母他们之间不一定要保持在原始字符串中的相对位置。样例
给出”abAcD”,一个可能的答案为”acbAD”
挑战
在原地扫描一遍完成
题解
典型的双指针遍历。
public class Solution {
/**
*@param chars: The letter array you should sort by Case
*@return: void
*/
public void sortLetters(char[] chars) {
int n = chars.length;
int up = 0;
int low = n-1;
while (up < low)
{
while (up <low && !isUpcase(chars[up]))
{
up++;
}
while (low >0 && isUpcase(chars[low]))
{
low--;
}
if (up < low)
{
char temp = chars[up];
chars[up] = chars[low];
chars[low] = temp;
}
}
}
private boolean isUpcase(char a)
{
return a >= 'A' && a <= 'Z';
}
}
Last Update 2016.9.28