
Intuition
답안 1
class Solution {
public String longestCommonPrefix(String[] strs) {
String prefix = "";
String shortestWord = "";
Integer shortestLength = Integer.MAX_VALUE;
for (int i = 0; i < strs.length; i++) {
if (shortestLength > strs[i].length()) {
shortestLength = strs[i].length();
shortestWord = strs[i];
}
}
String longestPrefix = "";
for (int i = 0; i < shortestWord.length(); i++) {
for (int j = 0; j < strs.length; j++) {
if(!strs[j].startsWith(longestPrefix + shortestWord.charAt(i))) {
return longestPrefix;
}
}
longestPrefix = longestPrefix + shortestWord.charAt(i);
}
return longestPrefix;
}
}
답안 2
class Solution {
public String longestCommonPrefix(String[] strs) {
String longestPrefix = "";
for (int i = 0; i < strs[0].length(); i++) {
for (int j = 0; j < strs.length; j++) {
if(!strs[j].startsWith(longestPrefix + strs[0].charAt(i))) {
return longestPrefix;
}
}
longestPrefix = longestPrefix + strs[0].charAt(i);
}
return longestPrefix;
}
}
답안 3
class Solution {
public String longestCommonPrefix(String[] strs) {
String longestPrefix = strs[0];
for (int i = 1; i < strs.length; i++) {
while(!strs[i].startsWith(longestPrefix)) {
longestPrefix = longestPrefix.substring(0, longestPrefix.length() - 1);
if (longestPrefix.length() == 0) {
return "";
}
}
}
return longestPrefix;
}
}
- 가장 처음 두개를 비교해서 longest prefix를 찾는다.
- 만약 longest perfix가 ""라면 ""를 return한다.
- 그렇게 계속 strs를 돌면서 prefix가 안된다면 또 현재 prefix의 substring이 prefix가 되게 만들어 prefix를 업데이트 시켜준다.