문자열 배열 중에서 가장 긴 공통 접두사 문자열을 찾는 함수를 작성하십시오.
공통 접두사가 없으면 빈 문자열을 반환합니다 "".
접두사: 영어에서 접두사(prefix)는 단어 맨 앞에 결합되어 본래 의미와 다른 의미를 나타낼 수 있게 하는 접사(affix)다.
ex: proceed, prospect, produce 여기서 접두사 pro '앞을 향해', '앞쪽으로' 를 뜻한다.
Example 1:
Input: strs = ["flower","flow","flight"]
Output: "fl"
Example 2:
Input: strs = ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.
var longest = (strArr) =>{
let size = strArr.length;
if (size == 0)
return "";
if (size == 1)
return strArr[0];
strArr.sort();
let end = Math.min(strArr[0].length, strArr[size-1].length);
let i = 0;
while (i < end && strArr[0][i] == strArr[size-1][i] )
i++;
let pre = strArr[0].substring(0, i);
return pre;
}
longest(["flower","flow","flight"]);
1. 최초로 인풋으로 들어오는 str 배열의 길이를 파악해주어 길이가 1이면 그 자체를 반환 / 빈 값이면 ""을 리턴해주어 분기처리한다.
2. 위 두 경우를 제외한 나머지는 sort를 사용하여 strArr를 알파벳 순으로 정렬해준다.
[ 'flight', 'flow', 'flower' ]로 정렬된다.
3. 검색할 접두사 문자열들의 길이를 처음과 끝에서 Math.min()으로 최소길이를 찾는다. >> 들어온 배열 요소중 가장 길이가 작은 기준으로만 검사하면 되기 때문이다.
4. while 문으로 i<end 이고 strArr[0][i] == strArr[size-1][i] 까지 반복문을 돌려주어 첫번째 요소와 마지막 요소 사이의 공통 접두사를 찾아준다.
영문 철자변경 대문자 소문자 첫글자만 변경/ 전체대문자 변경 / 전체 소문자변경 (0) | 2023.07.10 |
---|---|
[LeetCode] Roman to Integer (0) | 2022.02.06 |
[Algorithm] leetCode Palindrome Number (0) | 2022.01.23 |
[Algorithm] LeetCode Twosum JavaScript hash table (0) | 2022.01.23 |
TIL 알고리즘 넘버 역순 반환하기 (0) | 2021.11.16 |