#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; }