문제 요약 :
풀이 흐름 :
코드
사용 언어 : C++
#include <string>
#include <vector>
using namespace std;
string solution(string new_id) {
// 1, 2
for (int i = 0; i < new_id.length(); i++){
if ('A' <= new_id[i] && new_id[i] <= 'Z')
new_id[i] += 32;
else if ('a' <= new_id[i] && new_id[i] <= 'z')
;
else if ('0' <= new_id[i] && new_id[i] <= '9')
;
else if (new_id[i] == '-' || new_id[i] == '_' || new_id[i] == '.')
;
else{
new_id.erase(i, 1);
i--;
}
}
// 3
int dot_start = -1;
for (int i = 0; i < new_id.length(); i++){
if (new_id[i] == '.') {
if (dot_start == -1){
dot_start = i;
continue;
}
}
else{
if (dot_start != -1 && dot_start + 1 < i){
new_id.erase(dot_start, i - dot_start - 1);
i = -1;
}
dot_start = -1;
}
}
if (dot_start != -1)
new_id.resize(dot_start);
// 4
if (new_id.length() > 0){
if (new_id.front() == '.')
new_id.erase(0, 1);
if (new_id.back() == '.')
new_id.erase(new_id.length() - 1, 1);
}
// 5
if (new_id.length() == 0)
new_id = "a";
// 6
if (new_id.length() >= 16){
new_id.resize(15);
if (new_id.back() == '.')
new_id.erase(new_id.length() - 1, 1);
}
// 7
char c = new_id.back();
for (int i = new_id.length(); i < 3; ++i){
new_id += c;
}
return new_id;
}