LeetCode題解No14——“最長公共字首”
阿新 • • 發佈:2020-09-15
LeetCode題解
No94
難度:Easy
題目描述:
/* 編寫一個函式來查詢字串陣列中的最長公共字首。 如果不存在公共字首,返回空字串 ""。 示例 1: 輸入: ["flower","flow","flight"] 輸出: "fl" 示例 2: 輸入: ["dog","racecar","car"] 輸出: "" 解釋: 輸入不存在公共字首。 來源:力扣(LeetCode) 連結:https://leetcode-cn.com/problems/longest-common-prefix 著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。 */
題目思路
本題比較簡單,兩重迴圈去套就可以,先想清楚思路,首先最長公共字首,那麼滿足每一個字串的匹配,那取第一個字串當做模板,從他裡面取出每一個字元進行比較,隨後的字母如果有不匹配的,直接返回ans即可。如果i大於strs[j]的長度,也沒有必要再比較,直接返回即可
程式碼執行
public class No14 { public static void main(String[] args) { String[] arr = {"fff","fss","f23"}; String ans = longestCommonPrefix(arr); System.out.println(ans); } // 按行搜尋 public static String longestCommonPrefix(String[] strs) { // 特判 int n = strs.length; if (n == 0){ return ""; } // 用一個StringBuffer來存放答案,方便後序的字母的新增 StringBuffer ans = new StringBuffer(); for (int i = 0; i < strs[0].length(); i++) { // 用一個cur來存放當前的一個字元 char cur = strs[0].charAt(i); for (int j = 1; j < n; j++) { // 判斷一個終止條件 // 如果當前字串的長度比i小,直接退出 // 如果當前字串的第i個字母和第一行的不匹配,退出 if (strs[j].length() <= i || strs[j].charAt(i)!=cur){ return ans.toString(); } } ans.append(cur); } return ans.toString(); } }