# 02 公共前綴問題

02 公共前綴問題

A 思想

前綴:

  1. 對題目所給數組進行排序(Array.sort)

  2. 設立一個哨兵字符,默認爲false(用來判斷是否有必要遍歷下去)

  3. 設置字符串str,默認爲""(來拼接每次遍歷得到的公共部分)

  4. 獲取排序後的數組的第一個元素並把它拆分成一個個字符串(若數組不是字符串可以先轉成字符串)

  5. 對拆分後的字符串數組進行遍歷(具體過程如下:)

  6. 若字符串數組的首字母是數組最後一個元素的前綴,那麼設置哨兵字符爲true,讓str拼接字符串數組的首字母,然後一直遍歷下去(有就str拼接)直到找到最多的公共前綴,

    若不是,則直接退出循環(首字母不是,後面的必然不符合要求了)

  7. 最後返回字符串str的值

B 實例操作:查找字符串數組中的最高公共前綴

package class01;
import java.util.Arrays;
public class Solution2 {
    public static void main(String[] args) {
        String[] strings={"abcb","abcd","abcghc"};
        System.out.println(prefix(strings));
    }
    public static String prefix(String[] strs){
      Arrays.sort(strs);
      boolean flag=false;
        String prefix ="";//初始化
          String[] temp=strs[0].split("");//把題目已知的字符串數組的第一個字符串拆分成一個個字符
          for (int i = 0; i < temp.length; i++) {
              if(strs[strs.length-1].substring(i).startsWith(temp[i])){
                  prefix=prefix+temp[i];
                  flag=true;//只要有一個前綴,flag1就爲true
              }
              if(flag==false){
                  return "";
              }
          }
        return prefix;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章