문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
문자열 배열에서 가장 긴 공통의 접두사를 찾는 함수를 작성해라.
만약 공통의 접두사가 없다면, 빈 문자열 ""을 반환해라.
#1
Input: strs = ["flower", "flow", "flight"]
Output: "fl"
#2
Input: strs = ["dog", "racecar", "car"]
Output: ""
Explanation: 입력받은 문자열에서 공통의 접두사가 없다.
문자열을 일일이 잘라서 비교하는 것보다 하나의 문자열을 기준으로 잡고 해당 문자열을 잘라서 다른 문자열들과 비교하는 것이 쉽게 문제를 해결할 수 있다.
먼저 기준이 될 문자열 prefix를 선언하고 strs[0]을 할당한다.
String prefix = strs[0];
이제 반복문을 통해 strs를 순회할 것인데 strs의 0번째 값을 기준으로 잡았기때문에 0번째는 비교할 필요가 없어서 1번째부터 순회한다.
for(int i = 1; i < strs.length; i++){
}
for문으로 strs를 순회하면서 prefix와 해당 strs[i]를 비교할 것이다.
for(int i = 1; i < strs.length; i++){
while(strs[i].indexOf(prefix) != 0){
prefix = prefix.substring(0, prefix.length() - 1);
}
}
strs[i]를 indexOf()를 통해 prefix가 0번째에 위치하는지 검사를 한다. 이때 prefix가 0번째에 있지 않다면 prefix를 끝에서부터 잘라서 다시 prefix에 할당하고, 이것을 계속 반복한다.
마지막으로 prefix를 반환한다.
return prefix;
public String longestCommonPrefix(String[] strs) {
String prefix = strs[0];
for(int i = 1; i < strs.length; i++){
while(strs[i].indexOf(prefix) != 0){
prefix = prefix.substring(0, prefix.length() - 1);
}
}
return prefix;
}