LeetCode第14题:最长公共前缀

题目描述

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。

示例 1:
输入: ["flower","flow","flight"]
输出: "fl"

示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:
所有输入只包含小写字母 a-z 。

解决思路:

首先考虑vector为空,直接返回""。
然后拿第一个字符串的每个字符,依次与后面字符串的相应字符进行比较,相等则继续比较下一个,不等的话使用string.substr截取第一个字符串的当前位置字符串。
最后就是当vector不为空,而且当第一个字符串的所有字符都顺利比较完了,完全相等的情况下,直接返回第一个字符串strs[0]即可。

C++代码:

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        //异常情况,strs为空
        if(strs.empty())
            return "";
        
        //第一个string每个字母单独与后面的string相应字母比较
        for(int letterOfFirst=0;letterOfFirst<strs[0].size();++letterOfFirst){
            for(int otherStr=1;otherStr<strs.size();++otherStr){
                //若某个字符开始不相等
                //使用substr进行截取
                if(strs[0][letterOfFirst]!=strs[otherStr][letterOfFirst])
                    return strs[0].substr(0,letterOfFirst);
            }
        }
        
        //一直都没有找到不同的字母
        return strs[0];
    }
};

执行结果:

posted @ 2018-12-29 10:35  朕蹲厕唱忐忑  阅读(153)  评论(0编辑  收藏  举报