골:
문자열 배열이 주어지면 각 문자열의 약식 버전을 만듭니다.
사양:
이 문제에서 약어는 문자열의 첫 번째 N 문자입니다. 문자열의 경우 abc
: a
, ab
, 및 abc
모든 유효한 약어는, 동안 bc
, 그리고 ac
수 없습니다.
문자열 배열이 주어지면 입력과 약어가 주어지면 약어가 참조하는 입력 항목을 결정할 수있는 가장 짧은 약어 세트를 찾고 싶습니다.
예:
입력: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
우리는 첫 번째 문자열부터 시작하여 문자열을 통해 작업합니다.
월요일은을 포함하는 항목 문자열
M
이므로 가능한 가장 짧은 약어는M
입니다.화요일은로 시작
T
하지만 목요일도 그렇습니다. 이것은 우리가 문자열을 시도한다는 것을 의미합니다TU
. 다른 문자열로 시작하지 않으므로을 사용TU
합니다.수요일은
W
, 목요일은Th
, 금요일은F
입니다.
더 많은 예 :
Input: "one,two,three,four,five,six,seven"
Output: "o,tw,th,fo,fi,si,se"
Input: "red,orange,yellow,green,blue,purple"
Output: "r,o,y,g,b,p"
Input: "a,ab,abc"
Output: Not valid! No abbreviation for `a` that doesn't apply to the other items.
노트:
합리적인 방법으로 입력 및 출력합니다.
입력이 항상 유효한 문자열 배열이라고 가정 할 수 있습니다.
마지막 테스트 사례와 달리 항상 솔루션이 있다고 가정 할 수 있습니다.
문자열은 인쇄 가능한 ASCII (또는 인코딩의 인쇄 가능한 문자)로만 구성됩니다.
이것은 코드 골프이므로 가장 적은 바이트가 이깁니다!
U
화요일에 대문자 를 사용 하지만 h
목요일 에는 소문자 를 사용합니다.