Longest Common Prefix

https://oj.leetcode.com/problems/longest-common-prefix/

Write a function to find the longest common prefix string amongst an array of strings.

解题思路:

这题属于比较简单的基本题目。我采用的方法是,从第一位起,比较数组中每个字符串的该位,如果和第一个字符串的该位不同,就立刻返回该位之前的字符串,如果当前位数大于该字符串长度,也立刻返回该字符串。否则继续往后。

下面的方法,是一个two pass的方法,可以先找出最短的那个字符串,省得后面判断长度。

public class Solution {

    public String longestCommonPrefix(String[] strs) {

        if(strs.length == 0){

            return "";

        }

        

        int minLength = strs[0].length();

        for(String str : strs){

            if(str.length() < minLength){

                minLength = str.length();

            }

        }

        

        for(int i = 0; i < minLength; i++){

            char record = strs[0].charAt(i);

            for(String str : strs){

                if(str.charAt(i) != record){

                    return str.substring(0, i);

                }

            }

        }

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

    }

}

下面是一个one pass的方法,遇到当前i超过自身长度的,直接返回自身即可。

public class Solution {

    public String longestCommonPrefix(String[] strs) {

        if(strs.length == 0){

            return "";

        }

        

        // int minLength = strs[0].length();

        // for(String str : strs){

        //     if(str.length() < minLength){

        //         minLength = str.length();

        //     }

        // }

        

        for(int i = 0; ; i++){

            if(i > strs[0].length() - 1){

                return strs[0];

            }

            char record = strs[0].charAt(i);

            for(String str : strs){

                if(i > str.length() - 1){

                    return str;

                }

                if(str.charAt(i) != record){

                    return str.substring(0, i);

                }

            }

        }

        // return strs[0].substring(0, minLength);

    }

}

 

你可能感兴趣的:(long)