1. 程式人生 > >LeetCode 7最長公共前綴

LeetCode 7最長公共前綴

sam 兩個 bst npr () add car pan 示例

編寫一個函數來查找字符串數組中的最長公共前綴。

如果不存在公共前綴,返回空字符串 ""

示例 1:

輸入: ["flower","flow","flight"]
輸出: "fl"

示例 2:

輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴。

說明:

所有輸入只包含小寫字母 a-z

思路:

要求最長的公共前綴,就是求字符串數組所有字符串前面相同的部分。

創建一個新函數來比較兩個字符串前面相同的長度。

通過比較字符串0和剩余字符串的公共前綴,選出最小的長度即為最長公共前綴。

class Solution {
    public String longestCommonPrefix(String[] strs) {
        
if (strs.length==0)return ""; if (strs.length==1)return strs[0]; int sameCharNum=0; Set<Integer> set=new HashSet<>(); for (int i = 1; i < strs.length; i++) { sameCharNum = longestNum(strs[0], strs[i]); set.add(sameCharNum); }
int minNum=Integer.MAX_VALUE; for (int i:set){ if(minNum>i){ minNum=i; } } return strs[0].substring(0,minNum); } public int longestNum(String s1,String s2){ int sameCharNum=0; for (int i = 0; i<s1.length()&&i<s2.length(); i++) {
if (s1.charAt(i)==s2.charAt(i)) { sameCharNum++; }else return sameCharNum; } return sameCharNum; } }

LeetCode 7最長公共前綴