-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathSort_Letters_by_Case.cpp
More file actions
35 lines (30 loc) · 937 Bytes
/
Copy pathSort_Letters_by_Case.cpp
File metadata and controls
35 lines (30 loc) · 937 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*
Given a string which contains only letters. Sort it by lower case first and upper case second.
Note
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.
*/
#include <string>
using namespace std;
class Solution {
public:
/**
* @param chars: The letters array you should sort.
*/
void sortLetters(string& letters) {
// write your code here
int less = 0, equal = 0, larger = letters.length() - 1;
while (equal <= larger) {
if (letters[equal] >= 'a' && letters[equal] <= 'z') {
swap(letters[less++], letters[equal++]);
} else if (letters[equal] >= 'A' && letters[equal] <= 'Z') {
swap(letters[equal], letters[larger--]);
} else {
equal++;
}
}
}
};