골:
문자열 배열이 주어지면 각 문자열의 약식 버전을 만듭니다.
사양:
이 문제에서 약어는 문자열의 첫 번째 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목요일 에는 소문자 를 사용합니다.