Longest Common Prefix

/*

两层for循环 "dog","racecar","car"

第一层循环第一个数的长度用于增加长度

第二个循环 遍历每个数组的相同位置用于比较是否是相同;

失败 结果不对

class Solution {

    public String longestCommonPrefix(String[] strs) {

        if(strs == null || strs.length == 0) return "";


        int count;

        int i = 1;

        int len = Integer.MAX_VALUE;

        for(int j = 0; j < strs.length; j++) {

            len = Math.min(len, strs[j].length());

        }

        for(count = 0; count < len; ) {

            while(i < strs.length && str[0].charAt(count) == strs[i].charAt(count)) {

                i++;

            }

            //for(i = 1; i < strs.length; i++) {

              //  if(strs[0].charAt(count) != strs[i].charAt(count)) {

                //    break;

                //}

            //}

            if(i == strs.length - 1) {

                count++;

                continue;

            }else {

                break;

            }

        }

        if(count == 0 && i != strs.length - 1) {

            return "";

        }else {

            return strs[0].substring(0,count);

        }


    }

}

*/

/*

思路 首先建立一个储存prefix的string 把数组里面第一个数存进去

循环 整个数组

二层循环 循环数组中每个字符串与prefix比较 是否相同 把相同的部分更新成新的prefix;

*/

class Solution {

    public String longestCommonPrefix(String[] strs) {

        if(strs == null || strs.length == 0) return "";

        String prefix = strs[0];

        for(int i = 1; i < strs.length; i++) {

            int j = 0;

            while(j < strs[i].length() && j < prefix.length() && strs[i].charAt(j) == prefix.charAt(j)) {

                j++;

            }

            if(j == 0) return "";

            prefix = prefix.substring(0,j);

        }

        return prefix;

    }

}

你可能感兴趣的:(Longest Common Prefix)