문제
제출한 코드
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs.length == 1) {
return strs[0];
}
StringBuilder prefix = new StringBuilder();
String minLengthString = getMinimumLengthString(strs);
int minLength = minLengthString.length();
for (int i = 0; i < minLength; i++) {
char dupChar = minLengthString.charAt(i);
if (isDuplicateChar(strs, i, dupChar)) {
prefix.append(dupChar);
} else {
break;
}
}
return prefix.toString();
}
private boolean isDuplicateChar(String[] strs, int i, char dupChar) {
for (String str : strs) {
if (str.charAt(i) != dupChar) {
return false;
}
}
return true;
}
private String getMinimumLengthString(String[] strs) {
String initString = strs[0];
int initLength = strs[0].length();
for (String str : strs) {
if (str.length() <= initLength) {
initLength = str.length();
initString = str;
}
}
return initString;
}
}
잘한점
- 문제 풀이 방식을 모두 생각하고 코드로 그대로 옮기는데 성공했음
개선할 점
- getMinimumLengthString 함수를 만들던 도중, initString을 제대로 설정해주지 못한 경우가 있음
- 다른사람 풀이를 보니, getMinimumLengthString 함수는 필요 없었을 것 같음 ( 공통적인 Prefix를 뽑는 것이기 때문에, 맨 처음 String으로 진행 했어도 큰 문제가 없음 )
