02 公共前綴問題
A 思想
前綴:
-
對題目所給陣列進行排序(Array.sort)
-
設立一個哨兵字符,默認為false(用來判斷是否有必要遍歷下去)
-
設定字串str,默認為""(來拼接每次遍歷得到的公共部分)
-
獲取排序后的陣列的第一個元素并把它拆分成一個個字串(若陣列不是字串可以先轉成字串)
-
對拆分后的字串陣列進行遍歷(具體程序如下:)
-
若字串陣列的首字母是陣列最后一個元素的前綴,那么設定哨兵字符為true,讓str拼接字串陣列的首字母,然后一直遍歷下去(有就str拼接)直到找到最多的公共前綴,
若不是,則直接退出回圈(首字母不是,后面的必然不符合要求了)
-
最后回傳字串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;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/232311.html
標籤:其他
下一篇:tp5.1生成二維碼
