leetcode 14. Longest Common Prefix
原題リンク:
14. Longest Common Prefix
【考え方】
2つの考え方があります.
1.共通の単語をcommonで記録し、最初は最初の単語に設定し、strsの2番目から最後の単語と1つずつ比較し、commonの長さを更新する
2.すべての文字列のi番目の文字を比較するたびに、すべての文字のi番目の文字が同じであれば、iに1を加え、i+1番目を比較します.等しくない、またはある文字列の長さがiに等しいと発見するとstrs[0]を返す.substring(0,i),本題は解法2を推奨し,ここでは解法2を採用する.
117/117 test cases passed. Runtime: 4 ms Your runtime beats 27.61% of javasubmissions.
【補足】
補足の考え方1:
14. Longest Common Prefix
【考え方】
2つの考え方があります.
1.共通の単語をcommonで記録し、最初は最初の単語に設定し、strsの2番目から最後の単語と1つずつ比較し、commonの長さを更新する
2.すべての文字列のi番目の文字を比較するたびに、すべての文字のi番目の文字が同じであれば、iに1を加え、i+1番目を比較します.等しくない、またはある文字列の長さがiに等しいと発見するとstrs[0]を返す.substring(0,i),本題は解法2を推奨し,ここでは解法2を採用する.
public String longestCommonPrefix(String[] strs) {
if (strs.length == 0) return "";
for (int i = 0; i < strs[0].length(); i++)
for (String s : strs)
if (i == s.length() || s.charAt(i) != strs[0].charAt(i)) return strs[0].substring(0, i);
return strs[0];
}
117/117 test cases passed. Runtime: 4 ms Your runtime beats 27.61% of javasubmissions.
【補足】
補足の考え方1:
public String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) return "";
StringBuilder common = new StringBuilder();
common.append(strs[0]);
for (int i = 1; i < strs.length; i++) {
int j = 0;
for (int len = Math.min(common.length(), strs[i].length()); j < len; j++)
if (common.charAt(j) != strs[i].charAt(j)) break;
if (j == 0) return "";
common.setLength(j);
}
return common.toString();
}