首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

LeetCode Longest Common Prefix 最長公共前綴 (縱向掃描)

     編輯:關於C++

問題

給定字符串數組,求最長公共前綴。若無公共前綴返回空串。數組長度 0~n。

算法

縱向掃描:取第一個字符串作為基準,逐字符檢查所有其他字符串在該位置是否相同。遇到不匹配或越界即停止。也可橫向掃描:LCP(s1..sn) = LCP(LCP(s1,s2), s3)...

代碼 (C++)

class Solution {
public:
    string longestCommonPrefix(vector& strs) {
        if (strs.empty()) return "";
        if (strs.size() == 1) return strs[0];
        string pref = strs[0];
        for (int i = 1; i < strs.size(); ++i) {
            int j = 0;
            while (j < pref.size() && j < strs[i].size() && pref[j] == strs[i][j]) ++j;
            pref = pref.substr(0, j);
            if (pref.empty()) break;
        }
        return pref;
    }
};

複雜度

O(S) 時間,S 為所有字符串長度之和。O(1) 額外空間 (不計輸出)。

邊界處理

  • 空數組 → ""
  • 單字符串 → 該字符串
  • 包含空串 → ""
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved