1. 程式人生 > >14. 最長公共字首

14. 最長公共字首

/*
思路:
最長公共字首的意思就是從第一個字母開始的每個字串相同的字首
1、首先找到最短的那個字串的長度和最短的那個字串的下標
2、用兩個迴圈
     第一個迴圈,遍歷每個字串的第i個字母
     第二個迴圈,遍歷每個字串
3、判斷每個字串的第i個字元是否相等,如果發現第一個字母中有不想等的,直接返回“”;
如果發現第一個字元後面有不相等的,返回前面相同字首;如果發現全都相等,則返回最短的那個字串。
*/
class Solution {
    public String longestCommonPrefix(String[] strs) {
        
        int n = strs.length;
        int shortest = 0;//記錄最短字串的下標
        
        if(n == 0)
            return "";
        
        if(n == 1)
            return strs[0];
        
        int temp = strs[0].length();//記錄最短字串的長度
        for(int i = 1; i < n; i++){
            if(temp > strs[i].length()){
                temp = strs[i].length();
                shortest = i;   
            }
        }
        
        for(int i = 0; i < temp; i++){
            for(int j = 0; j < n-1; j++){
                if(strs[j].charAt(i) == strs[j+1].charAt(i))
                    continue;
                else{ //如果遇到不相等的情況
                    if(i == 0)
                        return "";
                    else{
                        return strs[0].substring(0,i);
                    }
                }
            }
        }
        //迴圈結束,如果還沒有返回值,說明全部相等,返回最短的那個陣列
        return strs[shortest];
    }
}