Leetcode(14)-最長公共前綴


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

如果不存在公共前綴,返回空字符串 ""

示例 1:

輸入: ["flower","flow","flight"]
輸出: "fl"

示例 2:

輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴。
 string longestCommonPrefix(vector<string>& strs)
{
    if(strs.empty())
        return "";
        //return NULL;
    int min = strs[0].size();
    for(int i=0;i<strs.size();i++)
    {
        if(strs[i].size()<min)
            min=strs[i].size();
    }
    string com;
    for(int j=0;j<min;j++)
    {
        vector<string>::iterator i = strs.begin();
        char c = (*i)[j];
        while(i<strs.end())
        {
            if(c==(*i)[j])
            {
                i++;
            }
            else
                return com;
        }
        com+=c;
    }
    return com;
}

自己程序的思路:我們首先要判斷字符串中最短的那個,以它的長度作為我們遍歷位數的最大值。然后依次對每個字符串的每一位做判斷,看是否相等,如果相等,就算一位,不相等,就停止遍歷。需要注意的地方是,空字符串的返回和return NULL是兩個不同的概念。return " "表示會創建一個對象,內容是" ",有內存空間,但是return NULL代表直接返回一個空指針,沒有內存空間,沒有對象。上述程序如果寫成return NULL 的話,會出現錯誤terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_M_construct null not valid


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM