LeetCode Longest Common Prefix

 Description

Write a function to find the longest common prefix string amongst an array of strings.
If there is no common prefix, return an empty string "".

Example 1:

Input: strs = ["flower","flow","flight"]
Output: "fl"

 Constraints

0 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] consists of only lower-case English letters.

 Solution

public class Solution {
    public String longestCommonPrefix(String[] strs) {
        if (strs.length != 0) {
            int index = 0;
            String first = strs[0];
            outerloop:
            for (int i = 0; i < first.length(); i++) {
                for (String x : strs) {
                    if (i < x.length()) {
                        if (first.charAt(i) == x.charAt(i)) {
                            index = i;
                        } else {
                            index = i - 1;
                            break outerloop;
                        }
                    } else {
                        index = i - 1;
                        break outerloop;
                    }
                }
            }
            if (first.length() != 0) {
                return first.substring(0, index + 1);
            } else {
                return "";
            }
        }
        return "";
    }
}

 Feedback

// 풀이 1

 public String longestCommonPrefix(String[] strs) {
    if (strs.length == 0) return "";
    String prefix = strs[0];
    for (int i = 1; i < strs.length; i++)
        while (strs[i].indexOf(prefix) != 0) {
            prefix = prefix.substring(0, prefix.length() - 1);
            if (prefix.isEmpty()) return "";
        }
    return prefix;
}
// 풀이 2

public String longestCommonPrefix(String[] strs) {
    if (strs == null || strs.length == 0) return "";
    for (int i = 0; i < strs[0].length() ; i++){
        char c = strs[0].charAt(i);
        for (int j = 1; j < strs.length; j ++) {
            if (i == strs[j].length() || strs[j].charAt(i) != c)
                return strs[0].substring(0, i);
        }
    }
    return strs[0];
}

Source