Leetcode 14 -- 最長公共前綴

題目鏈接如下:Leetcode 14


大致描述一下題目:

題目給出一個字符串數組,編寫一個函數找出最長公共前綴,如果沒有,返回空


解題思路:

基本上有兩個思路:橫向掃描和縱向掃描

假設我們有一個str[ ]數組,"flow" "flower" "flight"

橫向掃描就是遍歷所有字符串,先假設目標字串爲str[0],然後和下一個字符串每個字符逐一比較,當遇到不一樣的元素用substr截取保存爲目標子串,然後再去與下一個字符串比較。

縱向掃描對所有字符串str[i][0],str[i][1]這樣一個一個比較過去,遇到不一樣的,則返回str[i][j]。


附上代碼如下(C++):[橫向掃描]

/*******************************************************************************
Copyright © 2018-20xx Qiao Chuncheng, All Rights Reserved.
File name:		014[最長公共前綴].cpp
Author:			Qiao Chuncheng
Version:		v1.0
Date:			2018-04-11
*******************************************************************************/
class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        if (strs.size() == 0)//樣例數據就是空的Vector
		return "";

        string tempStr = strs[0];
        for (size_t i = 1; i < strs.size(); i++)
        {
            if (tempStr.size() == 0 || strs[i].size() == 0)
                return "";

            size_t len = strs[i].size() > tempStr.size() ? tempStr.size() : strs[i].size();
            size_t j;
            for (j = 0; j < len; j++)
            {
                if (tempStr[j] != strs[i][j])
                {
                    //tempStr = strs[i].substr(0, j);
                    break;
                }
            }
            tempStr = strs[i].substr(0, j);//單步調試發現這個需要在循環外
        }
        return tempStr;
    }
};



發佈了46 篇原創文章 · 獲贊 23 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章