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