剑指offer 最长公共前缀Java

力扣题目链接
第一种1ms

class Solution {
    public String longestCommonPrefix(String[] strs) {
        
        //求出字符数组长度,方便后边遍历
        int n = strs.length;
        if(n==0) return "";
        //初始化返回值
        String ans = strs[0];
        //开始遍历,从数组的第二个开始
        for(int i=1;i<n;i++){
            //初始化内循环控制变量,便于后边返回公共前缀
            int j = 0;
            for(;j<ans.length() && j<strs[i].length();j++){
                if(ans.charAt(j) != strs[i].charAt(j)) break;
            }
            ans = ans.substring(0,j);
            if(ans.equals("")) return ans;
        }
        return ans;
    }
}

第二种2s

class Solution {
    public String longestCommonPrefix(String[] strs) {
        if(strs.length==0)return "";
        //公共前缀比所有字符串都短,随便选一个先
        String s=strs[0];
        for (String string : strs) {
            while(!string.startsWith(s)){
                if(s.length()==0)return "";
                //公共前缀不匹配就让它变短!
                s=s.substring(0,s.length()-1);
            }
        }
        return s;
    }
}
上一篇:分析函数排名 rank()、dense_rank()、row_number()


下一篇:Java-C#-访问修饰符