最长公共前缀

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

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

初始傻子版本

public static String longestCommonPrefix(String[] strs) {
        if (strs.length > 1) {
            String s1 = strs[0];
            String s2 = strs[1];
            int sum = 0;
            if (s1.length() <= s2.length()) {
                sum = s1.length();
            } else {
                sum = s2.length();
            }
            String str = "";
            for (int i = 0; i < sum; i++) {

                char ch1 = s1.charAt(i);
                char ch2 = s2.charAt(i);
                if (ch1 == ch2) {
                    str = str + ch1;
                } else {
                    break;
                }
            }

            for (int j = 2; j < strs.length; j++) {
                String str1 = strs[j];
                String str2 = "";
                int sum1 = 0;
                if (str1.length() <= str.length()) {
                    sum1 = str1.length();
                } else {
                    sum1 = str.length();
                }

                for (int z = 0; z < sum1; z++) {
                    char ch1 = str.charAt(z);
                    char ch2 = str1.charAt(z);

                    if (ch1 == ch2) {
                        str2 = str2 + ch1;
                    } else {
                       break;
                    }
                }
                str = str2;
            }

            return str;
        }
        else if(strs.length ==0){
            return "";
        }
        else {
            return strs[0];
        }
    }

更改版本 

 public String longestCommonPrefix(String[] strs) {
         if(strs.length==0)return "";//字符串数组为0的直接返回空
        String s=strs[0];
        for (String string : strs) {
            while(!string.startsWith(s)){//以s为开头的不执行循环语句
                if(s.length()==0)return "";
                //公共前缀不匹配就去掉最后一个字母
                s=s.substring(0,s.length()-1);
            }
        }
        return s;
    }

 

posted @ 2021-03-13 22:40  chenyuan#  阅读(52)  评论(0)    收藏  举报