Solution:
feel like it is not a "medium" level question, should be a "simple" one. Scan from the right to left, if it is '-', remove it; if it is char from 'a' to 'z', convert it to the corresponding uppercase, count + 1; otherwise, count + 1, continue. If the total elements accumulate to K, add '-'; continue scanning until end.
Code:
class Solution {
public:
string licenseKeyFormatting(string S, int K) {
int i = S.size()-1, t = 0;
while(i>=0){
if(S[i] == '-') S.erase(S.begin()+i);
else{
if(S[i] >= 'a' && S[i] <= 'z' ) S[i] = S[i] - 'a' + 'A';
++t;
if(t == K){
S.insert(S.begin()+i, '-');
t = 0;
}
}
--i;
}
if(S[0] == '-') S.erase(S.begin());
return S;
}
};
No comments :
Post a Comment