[자바JAVA]14. Longest Common Prefix
문제 14. Longest Common Prefix
공통으로 가장 긴 접두사를 찾는 문제이다.
Write a function to find the longest common prefix string amongst an array of strings.
If there is no common prefix, return an empty string “”.
strs[i] consists of only lower-case English letters.
- 입출력예시
1 | //예시1 |
풀이 코드
1 | class Solution { |
배운 지식
indexOf()를 사용할 생각을 못했다.
indexOf()는 주어진 요소가 배열에 있다면 그 첫번째 인덱스 값
를 반환하고 없으면 -1
을 반환한다.
아래 3가지 모두 0
을 리턴한다.
1 | "ant".indexOf("ant") => 0 |
strs[0]전체를 prefix로 두고 만약 strs[1]과 일치하지 않는다면 strs[0]의 마지막 char를 지워나가는 방식이다.
예를 들어 strs배열이 아래와 같다고 하자.
1 | strs[0] = "flower" |
for문 시작 i=1일때,
flow에flower
가 속해있지않다. -> prefix에서flower
의 마지막 char인r
을 제거 -> 다시 while문
flow에flowe
가 속해있지않다. -> prefix에서flowe
의 마지막 char인e
를 제거 -> 다시 while문
flow에flow
가 0번째로 속해있다. -> prefix는flow
가 되고 while문 종료for문 시작 i=2일때,
flight에flow
가 속해있지않다. -> prefix에서flow
의 마지막 char인w
을 제거 -> 다시 while문
flight에flo
가 속해있지않다. -> prefix에서flo
의 마지막 char인o
를 제거 -> 다시 while문
flight에fl
가 0번째로 속해있다. -> prefix는fl
가 되고 while문 종료
항상 생각의 전환을 하자. 항상 더 나은 코드가 있다.