LeetCode刷题记录_最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。

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

示例 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)