最长公共前缀

2、最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。

示例1

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

示例2

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

说明:

所有输入只包含小写字母 a-z

Solution

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        string str="";
        int i=0;
        int over=0;
        if(strs.size()==0)
            return str;
        if(strs.size()==1)
            return strs[0];
        while(1){
            for(int j=1;j<strs.size();j++){
                if(i==strs[j].size()){
                    over=1;
                    break;
                }
                if(strs[j][i]==strs[0][i]){
                    if(j==strs.size()-1){
                        str+=strs[0][i];
                        i++;
                    }
                    else
                        continue;
                }
                else{
                    over=1;
                    break;
                }
            }
            if(over)
                return str;
        }
    }
};

解题思路:

针对输入的字符串组存在的特殊情况进行特殊处理,如果没有字符串,则直接返回空,如果只有一个字符串,则直接将该字符串返回即可。

其余情况,设两个变量,分别代表横向和纵向,以第一个字符串做参考,检查其余字符串,有以下情况时可结束检查,并返回。1、横向变量的值超过某一字符串的最长长度;2、纵向比较时发现不相等的情况;如果字符比较相等,且到达最后一个字符串,则更新返回字符串,继续进行比较。

大神的做法;
vector用法

你可能感兴趣的:(c++,leetcode)