1. 程式人生 > >LeetCode刷題記錄_最長公共前綴

LeetCode刷題記錄_最長公共前綴

public 掌握 刷題 編寫 npr bsp leet comm mount

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

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

示例 1:

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

示例 2:

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

說明:

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

題解:

用兩層循環,第一層循環選定字符串str[0],用substring獲得str[0]的各個分字符串,在第二層循環中與其他字符串的substring對比,若不同則返回前一個子串:

class Solution {
    public String longestCommonPrefix(String[] strs) {
        
        int amount = strs.length;
        if (amount==0) return "";
        int len = strs[0].length();
        for(int i=1;i<amount;i++){
            if(strs[i].length()<len)
                len=strs[i].length();
        } 
        String str="";
        for(int i=1;i<=len;i++){
            str=strs[0].substring(0,i);
            for(int j=1;j<amount;j++){
                if(!str.equals(strs[j].substring(0,i)))
                    return str.substring(0,i-1);
            }
        }
        return str;
    }
}

註意:1.substring中string的s為小寫。

2.對字符串個方法的掌握還是太差了,別人的解法中看到了用str1.indexOf(String str2)求解的,該方法若存在返回[0,str1.length()-str2.length()]的值,不存在返回-1,所以只需從str1.substring(0,str.length())到str1.substring(0,0)判斷indexOf的返回值是否為0,若為0則返回字符串,否則str1=str1.substring(0,str1.length()-1)

LeetCode刷題記錄_最長公共前綴