寫出一個在字符串數組中查找最長共同前綴的程序

編寫一個函數來查找字符串數組中的最長公共前綴,如果不存在公共前綴,返回空字符串 ""。

示例 1:

輸入: ["flower","flow","flight"]
輸出: "fl"

示例 2:

輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴。

說明:

所有輸入只包含小寫字母 a-z 。

   

 class Solution {
        public String longestCommonPrefix(String[] strs) {
            String s="";
            int judge=1;
            if(strs.length==0){//數組爲空直接返回""
                return s;
            }
            for(int i=0;i<strs[0].length();i++){
                char a=strs[0].charAt(i);//直接選擇第一個數組元素,依次取這個字符串的字符
                
                for(int j=0;j<strs.length;j++){
                    
                    if(i>=strs[j].length()){//因爲每個字符串長度不同,防止溢出
                        judge=0;
                        break;
                    }
                    
                    if(a!=strs[j].charAt(i)){
                        judge=0;//只要存在不同,直接退出
                        break;
                    }
                    
                    else{
                        if(j==strs.length-1){
                            s=s+a;
                        }
                    }
                    
                }
                if(judge==0){
                    break;
                }
            }
        
            return s;
        }
    }

找出一個字符串數組中最長公共前綴字符串

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) {                      \\返回一個整數值,指出 String 對象內子字符串的開始位置。如果沒有找到子字符串,則返回-1。
            prefix = prefix.substring(0, prefix.length() - 1);      \\子字符串開始位置不爲0則縮小子字符串,再進行對比
            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]; 
         }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章