1Day 1Practice

[codewars] Isograms

Bittersweet- 2022. 6. 10. 11:04
728x90

Description.

An isogram is a word that has no repeating letters, consective or non-consective. Implement a function that determines whether a string that contains only letter is an isogram. Assume the empty string is an isogram. Ignore letter case.

 

isogram은 연속되든 연속되지 않든 반복 문자가 없는 단어이다. 

문자만 포함하는 string이 isogram인지 아닌지를 결정하는 함수를 구현하라. 빈 string은 isogram으로 가정하고 대소문자는 무시하라.

 

Example(with result).

"Dermatoglyphics" ==> true
"aba" ==> false
"moOse" ==> false

 

 


 

 

Solution.

function isIsogram(str) {
	return !/(\w).*\1/i.test(str);
}

\w - 영어 알파벳, 숫자, 언더스코어(_) [A-Za-z0-9]와 동일

. - 모든 문자열(숫자, 한글, 영어, 특수기호, 공백 모두! 단, 줄바꿈 X)

* - 없거나 or 있거나(여러개)

\1 - 첫번째 괄호(\w)의 검색 결과가 캡쳐링 되어 \1에 담긴다.

 

\w의 모든 문자열(.)에서 여러개(*)인 것을 대소문자 상관없이(i) 검색한 값을 \1에 캡쳐하고 값이 있으면 true, false 인데 맨 앞에 !붙었으므로 결과값은 반복문자가 있는 경우, false, 없는 경우 true를 반환한다.

 


최근에 정규식에 대해 집요하게 살펴볼 기회가 있어서 공부해둔게 도움이 된거 같다.

물론 외우지는 못했다. 그냥 정리 해뒀던 것들을 참고해서 찾아보고 더듬더듬 만들어가는 정도의 수준?

아직 캡쳐링이나 그룹에 대해서는 좀 더 명확한 개념 정의가 필요할 것같다.

 

답변에 대한 것은 바로 하단에 적어둔 것으로 설명이 되리라고 믿는다.

'1Day 1Practice' 카테고리의 다른 글

[codewars] Valid Parentheses  (0) 2022.06.15
[codewars] Stop gninnips My sdroW!  (0) 2022.06.14
[codewar] Replace With Alphabet Position  (0) 2022.06.09
[codewars] Persistent Bugger  (0) 2022.05.19
[Programmers] 행렬의 덧셈  (0) 2022.03.18