맨 앞을 빼기위해서는 substr(1) 로 처리하자.
#include <string>
#include <vector>
using namespace std;
string solution(string new_id) {
string answer = "";
bool check = false;
for( char& i : new_id)
{
i = tolower(i);
//소문자가 아니면서 숫자도 아니면서, 빼기도 아니면서,
//밑줄도 아니며서 마침표도 아니면 continue;
//나머지는 추가
if( !(i >= 'a' && i <= 'z') && !(i >= '0' && i <= '9')
&& i != '-' && i != '_' && i != '.')
{
continue;
}
if(i == '.')
{
if(check)
{
continue;
}
else
{
check = true;
}
if(answer.empty())
{
continue;
}
}
else
{
check = false;
}
answer += i;
}
if(answer.back() == '.')
answer.pop_back();
if(answer.empty())
{
answer += 'a';
}
if(answer.length() >= 16)
{
answer = answer.substr(0,15);
}
if(answer.back() == '.')
answer.pop_back();
if(answer.length() <= 2)
{
char i = answer.back();
while(answer.length() < 3)
{
answer += i;
}
}
return answer;
}
#include <string>
#include <vector>
using namespace std;
string solution(string new_id) {
string answer = "";
int dotCnt = 0;
//1. 소문자로 바꾸자.
for(int i = 0; i < new_id.length(); i++)
{
new_id[i] = tolower(new_id[i]);
//2. 알파벳, 숫자 , 특수문자 처리
if(new_id[i] == '.' || new_id[i] == '-' || new_id[i] == '_'
|| new_id[i] >= '0' && new_id[i] <= '9' || new_id[i] >= 'a' && new_id[i] <= 'z')
{
//3.연속된 .. 처리
if(new_id[i] == '.')
{
dotCnt++;
}
else
dotCnt = 0;
if(dotCnt < 2)
answer += new_id[i];
}
}
//4. 처음과 마지막에 dot이 있을 경우 제거한다.
if(answer.back() == '.')
{
answer.pop_back();
}
//4. 처음과 마지막에 dot이 있을 경우 제거한다.
if(answer.front() == '.')
{
answer = answer.substr(1);
}
//5. 빈 문자열 처리
if(answer.empty())
{
answer += 'a';
}
//6. 문자열 길이 제한
if(answer.length() >= 16)
{
answer = answer.substr(0, 15);
}
//6-2. 추가처리
if(answer.back() == '.')
{
answer.pop_back();
}
//7. 문자열 길이 2자 이하 처리
if(answer.length() <= 2)
{
char word = answer.back();
while(answer.length() != 3)
answer += word;
}
return answer;
}