欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

#leetcode刷题之路14-最长公共前缀

程序员文章站 2022-04-28 11:42:37
编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入: ["flower","flow","flight"]输出: "fl" 示例 2: 输入: ["dog","racecar","car"]输出: "" 解释: 输入不存在公共前缀。说明: 所有 ......

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

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

示例 1:

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


示例 2:

输入: ["dog","racecar","car"]
输出: ""


解释: 输入不存在公共前缀。
说明:

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

 

思路:

最后的公共前缀肯定不会超过任何一个字符串的长度;

暴力法:直接依次比较第一个字符串和其他字符串的同一位置的字符。

#include<iostream>
#include<vector>
#include<string>
using namespace std;


string longestcommonprefix(vector<string>& strs) {

    if (strs.size() == 0)
    {
        return "";
    }
    if (strs.size() == 1)
    {
        return strs[0];
    }
    int len = strs.size();
    for (int i = 0; i < strs[0].length(); i++)
            {
                for (int j = 1; j < len; j++)
                {
                    if ((i >= strs[j].length()) || strs[j][i] != strs[0][i]) 
                    {
                        return strs[0].substr(0, i);
                    }
                }
            }
    return strs[0];
}




int main(){
    vector<string> a = { "jieiuye", "jian", "j" };
    string ans = longestcommonprefix(a);
    cout <<ans << endl;
    return 0;
}