Sort Letters by Case
Sort Letters by Case (leetcodelintcode)
Description
Given a string which contains only letters. Sort it by lower case first and upper case second.
Notice
It's NOT necessary to keep the original order of lower-case letters and upper case letters.
Example
For "abAcD", a reasonable answer is "acbAD"
Challenge
Do it in one-pass and in-place.
解题思路
思路与 Partition Array 相同,使用指向数组首尾的双指针,向中间遍历。
易错点
Character.isLowerCase()函数的使用。
Java 实现
public
class
Solution
{
/**
*
@param
chars: The letter array you should sort by Case
*
@return
: void
*/
public
void
sortLetters
(
char
[] chars)
{
if
(chars ==
null
|| chars.length ==
0
) {
return
;
}
int
left =
0
;
int
right = chars.length -
1
;
while
(left
<
= right) {
while
(left
<
= right
&
&
Character.isLowerCase(chars[left])) {
left++;
}
while
(left
<
= right
&
&
Character.isUpperCase(chars[right])) {
right--;
}
if
(left
<
= right) {
char
temp = chars[left];
chars[left] = chars[right];
chars[right] = temp;
}
}
return
;
}
}