畫解算法:14. 最長公共前綴

題目連接

leetcode-cn.com/problems/lo…java

題目描述

編寫一個函數來查找字符串數組中的最長公共前綴。算法

若是不存在公共前綴,返回空字符串 ""。數組

示例 1:bash

輸入: ["flower","flow","flight"]
輸出: "fl"
複製代碼

示例 2:函數

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

說明:spa

全部輸入只包含小寫字母 a-z 。3d

解題方案

思路

  • 標籤:字符串
  • 當字符串數組長度爲0時則公共前綴爲空,直接返回
  • 令最長公共前綴ans的值爲第一個字符串,進行初始化
  • 遍歷後面的字符串,依次將其與ans進行比較,兩兩找出公共前綴,最終結果即爲最長公共前綴
  • 若是查找過程當中出現了ans爲空的狀況,則公共前綴不存在直接返回
  • 時間複雜度:O(s),s爲全部字符串的長度之和

代碼

  • Java版本
class Solution {
    public String longestCommonPrefix(String[] strs) {
        if(strs.length == 0) 
            return "";
        String ans = strs[0];
        for(int i =1;i<strs.length;i++) {
            int j=0;
            for(;j<ans.length() && j < strs[i].length();j++) {
                if(ans.charAt(j) != strs[i].charAt(j))
                    break;
            }
            ans = ans.substring(0, j);
            if(ans.equals(""))
                return ans;
        }
        return ans;
    }
}
複製代碼
  • JavaScript版本
/** * @param {string[]} strs * @return {string} */
var longestCommonPrefix = function(strs) {
    if(strs.length == 0) 
        return "";
    let ans = strs[0];
    for(let i =1;i<strs.length;i++) {
        let j=0;
        for(;j<ans.length && j < strs[i].length;j++) {
            if(ans[j] != strs[i][j])
                break;
        }
        ans = ans.substr(0, j);
        if(ans === "")
            return ans;
    }
    return ans;
};
複製代碼

畫解

fr<x>ame_00001.png
fr<x>ame_00002.png
fr<x>ame_00003.png
fr<x>ame_00004.png
fr<x>ame_00005.png

後臺回覆「算法」,加入每天算法羣 以爲算法直擊靈魂,歡迎點擊在看轉發code

相關文章
相關標籤/搜索