新しいIDの推奨
3003 ワード
https://programmers.co.kr/learn/courses/30/lessons/72410
1.大文字
if (new_id[i] >= 'A' && new_id[i] <= 'Z')
2.小文字処理
if (new_id[i] >= 'a' && new_id[i] <= 'z')
3.文字列の削除
//手順3:.この2回以上出てきた部分.を選択します.
if (new_id.front() == '.')::アドレス値ではありません.実績値
if (new_id.back() == '.')
new_id.begin();::アドレス値.
new_id.end();::アドレス値.
文字列全体の問題の処理
#include <string>
#include <vector>
using namespace std;
string solution(string new_id)
{
//단계 1 : 모든 대문자를대응되는 소문자로 치환한다.
for (int i = 0; i < new_id.size(); i++)
{
if (new_id[i] >= 'A' && new_id[i] <= 'Z')
{
new_id[i] = tolower(new_id[i]);
}
}
//단계 2 : 알파벳 소문자, 숫자, 빼기, 밑줄 마침표 제외한 모든 문자 제거
for (int i = 0; i < new_id.size(); )
{
if ((new_id[i] >= 'a' && new_id[i] <= 'z') || (new_id[i] >= '0' && new_id[i] <= '9') || new_id[i] == '-' || new_id[i] == '_' || new_id[i] == '.')
{
i++;
continue;
}//나머지 문자들은 제외합니다.
new_id.erase(new_id.begin() + i);//지워지고 알아서 압축된다.
}
//단계 3 : . 이 2 번이상 나타나는 부분들은 .으로 치환합니다.
char cTemp = '.';
for (int i = 1; i < new_id.size(); )
{
if ((new_id[i] == cTemp) && (new_id[i - 1] == cTemp))
{
new_id.erase(new_id.begin() + i);
continue;
}
i++;
}
//단계 4 : new_id 에서 마침표가 처음이나 끝에 위치한다면 제거한다.
if (new_id.front() == '.') new_id.erase(new_id.begin());
if (new_id.back() == '.') new_id.erase(new_id.end() - 1); //마지막에서 -1해준 위치이다.
//단계 5 : 빈 문자열이라면 , "a"대입합니다.
if (new_id.size() == 0) new_id = "a";
//단계 6 : 16자 이상이라면, 15개 문자 제외한 나머지 모두 제외한다. 이후 마침표가 new_id의 끄텡 위치한다면 마지막 마침표 문자 제거합니다.
if (new_id.size() >= 16)
{
new_id.erase(new_id.begin() + 15, new_id.end());
if (new_id.back() == '.')
{
new_id.erase(new_id.begin() + 14);
}
}
// 단계 7 : 길이가 2자리 이하라면, new_id 마지막문자를 3이 될때까지 반복해서 끝에 붙인다.
char cTemp1 = new_id[new_id.size() - 1];
if (new_id.size() <= 2)
{
while (new_id.size() != 3)
{
new_id += cTemp1;
}
}
return new_id;
}
トピックによく表示される文字列タイプ.1.大文字
if (new_id[i] >= 'A' && new_id[i] <= 'Z')
2.小文字処理
if (new_id[i] >= 'a' && new_id[i] <= 'z')
3.文字列の削除
//手順3:.この2回以上出てきた部分.を選択します.
char cTemp = '.';
for (int i = 1; i < new_id.size(); )
{
if ((new_id[i] == cTemp) && (new_id[i - 1] == cTemp))
{
new_id.erase(new_id.begin() + i);
continue;
}
i++;
}
4.front/back/begin/endの使用if (new_id.front() == '.')::アドレス値ではありません.実績値
if (new_id.back() == '.')
new_id.begin();::アドレス値.
new_id.end();::アドレス値.
文字列全体の問題の処理
Reference
この問題について(新しいIDの推奨), 我々は、より多くの情報をここで見つけました https://velog.io/@imalive77/신규-아이디-추천テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol