コーディングテスト練習-新しいアイデンティティを推奨
15745 ワード
コーディングテスト練習-新しいアイデンティティを推奨
ユーザがルールに適合しないIDを作成すると,入力されたIDと同様にルールに適合するIDを推奨するサービスが開発される.
合計:80.0/10.0:3,5,14,20,21失敗
正規表現の使用以外は論理的に差はないようですが、正解処理が行われています.特定の文字のみを含むか除外するルールがある場合は、正規表現を使用して必要なデータを効率的に取得できます.
他の記事を読むと確定しませんが、replace()関数を使用して文字列を空の文字列に変換すると、テストケースが失敗する可能性があります.
他の人のコードを持ってきてください.ほとんどは正規表現で処理されます.
ユーザがルールに適合しないIDを作成すると,入力されたIDと同様にルールに適合するIDを推奨するサービスが開発される.
#エラーコード
合計:80.0/10.0:3,5,14,20,21失敗
def solution(new_id):
new_id = new_id.lower() #1단계
dot = 0 # 마침표 개수 count
for i in new_id: # 2단계
if i.isdigit() or i.islower() or i =='-' or i == '_' or i == '.':
continue
else:
new_id = new_id.replace(i,'')
for idx, i in enumerate(new_id): # 3단계
if i == '.':
dot += 1
if idx != len(new_id)-1:
continue
if (i == new_id[-1] or i != '.') and dot >= 1:
if dot > 1:
new_id = new_id.replace('.'*dot, '.')
dot = 0
if new_id[0] == '.': # 4단계
new_id = new_id[1:]
if not new_id:#5단계
new_id += 'a'
if new_id[-1] == '.':
new_id = new_id[:-1]
if len(new_id) >= 16: #6단계
new_id = new_id[:15]
if new_id[-1] == '.':
new_id = new_id[:14]
if len(new_id) <= 2: #7단계
while(len(new_id) < 3):
new_id += new_id[-1]
return new_id
#正解コード
正規表現の使用以外は論理的に差はないようですが、正解処理が行われています.特定の文字のみを含むか除外するルールがある場合は、正規表現を使用して必要なデータを効率的に取得できます.
他の記事を読むと確定しませんが、replace()関数を使用して文字列を空の文字列に変換すると、テストケースが失敗する可能性があります.
import re
def solution(new_id):
answer = new_id.lower()
answer = re.sub("[^-_.a-z0-9]","",answer) # 소문자, 숫자, -, _, .
answer = re.sub("[.]+", ".",answer) # 2번 이상 연속된 마침표 치환
answer = re.sub("^[.]|[.]$", "",answer) # 마침표가 맨앞이거나 맨뒤에 있으면 제거
if not answer:
answer += 'a'
if len(answer) >= 16:
answer = answer[:15]
if answer[-1] == '.':
answer = answer[:14]
if len(answer) <= 2:
while(len(answer) < 3):
answer += answer[-1]
return answer
#参照コード
他の人のコードを持ってきてください.ほとんどは正規表現で処理されます.
import re
def solution(new_id):
st = new_id
st = st.lower()
st = re.sub('[^a-z0-9\-_.]', '', st)
st = re.sub('\.+', '.', st)
st = re.sub('^[.]|[.]$', '', st)
st = 'a' if len(st) == 0 else st[:15]
st = re.sub('^[.]|[.]$', '', st)
st = st if len(st) > 2 else st + "".join([st[-1] for i in range(3-len(st))])
return st
Reference
この問題について(コーディングテスト練習-新しいアイデンティティを推奨), 我々は、より多くの情報をここで見つけました https://velog.io/@ghenmaru/코딩테스트-연습-신규-아이디-추천テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol