最長公共字首
問題描述:
編寫一個函式來查詢字串陣列中的最長公共字首。
樣例輸入:
["abca","abc","abca","abc","abcc"]
樣例輸出:
"abc"
程式碼:
public static void main(String[] args) {
// 測試
Scanner sc = new Scanner(System.in);
System.out.println("Please input five strings !");
String[] strings = new String[5];
while(true){
for (int i=0; i<5; i++){
strings[i] = sc.next();
}
System.out.println(maxPreStr(strings));
}
}
// 求一個字串陣列的各個字串的最長公共字首
private static String maxPreStr(String[] strs){
// 判斷strs是否合法
if(strs.length<=0){
return "";
}
StringBuilder sb = new StringBuilder();
for (int i=0; i<strs[0].length(); i++){ // i的取值範圍是strs陣列中第一個字串的長度
char c = strs[0].charAt(i); // 逐個讀取第一個字串的字元
for (int j=1; j<strs.length; ){ // 從陣列中的第二個字串開始比較
// 判斷下一個字串的長度是否合法,防止字串長度越界,讀取除第一個字串之後的字串的第一個字元
if(strs[j].length()>i && strs[j].charAt(i)==c){
j++; // 接著讀取下一個字串的字元
}else{
// 如果有字串不滿足上述條件,則將sb中的內容返回出去即可
// 判斷一下sb的內容是否為空,若為空則輸出 null
return sb.length()==0 ? "" : sb.toString();
}
}
sb.append(c);
}
// 輸出sb中的內容
return sb.toString();
}
結果:
注意最後一行有一個空格表示“”,此時表示沒有公共字首
相關文章
- LeetCode最長公共字首(Python)LeetCodePython
- 14.最長公共字首
- 14. 最長公共字首
- 力扣最長公共字首力扣
- 14_最長公共字首
- 每日leetcode——最長公共字首LeetCode
- 演算法:最長公共字首演算法
- LeeCode 14. 最長公共字首
- LeetCode-14. 最長公共字首LeetCode
- leetcode14.最長公共字首LeetCode
- #LeetCode14. 最長公共字首 @FDDLCLeetCode
- 每日一練(35):最長公共字首
- 力扣 14. 最長公共字首力扣
- 演算法之字串——最長公共字首演算法字串
- LeetCode——python3最長公共字首——2020.11.24LeetCodePython
- LeetCode每日一題:最長公共字首(No.14)LeetCode每日一題
- LeetCode - 014 - 最長公共字首(longest-common-prefix)LeetCode
- leetcode爬坑史(一)-- [14] 最長公共字首LeetCode
- ABC353E字典樹處理最長公共字首
- 2020-10-31 最長公共字首【簡單題14】
- 讓我們一起啃演算法----最長公共字首演算法
- 【完虐演算法】「字串-最長公共字首」5種方法腦洞大開演算法字串
- 最長公共子序列
- 最長公共子序列(JAVA)Java
- lCS(最長公共子串)
- 面試題:編寫一個函式來查詢字串陣列中的最長公共字首。 如果不存在公共字首,返回空字串 ""。(c++實現)面試題函式字串陣列C++
- 最長公共子序列求方案數
- java 實現 最長公共子序列Java
- 最長公共子序列 Longest Common Subsequence
- 線性dp:最長公共子串
- 線性dp:最長公共子序列
- LeetCode 1143.最長公共子序列LeetCode
- 動態規劃-最長公共子序列動態規劃
- 動態規劃——最長公共子序列動態規劃
- 測試開發工程師的每日演算法-Leecode 演算法題目第 14. 最長公共字首工程師演算法
- 力扣1143. 最長公共子序列 動態規劃之最長公共子序列力扣動態規劃
- 最長公共子序列LCS 輸出所有LCS
- 51Nod 1006 最長公共子序列Lcs