LeetCode 14. 最长公共前缀(Longest Common Prefix)

题目描述

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

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

示例 1:

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

示例 2:

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

说明:

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

解题思路

首先定义一个查找公共前缀的函数comPre,从两个字符串的首字符开始比较,若对应字符相等就将其加到结果中,这样遍历直到字符不相等或者走到任意一个字符串末尾。

回到原题目,首先把最长公共前缀定义为第一个字符串,接着从第二个字符串开始,依次查找最长公共前缀与当前字符串的最长公共前缀,直到字符串数组末尾,最后求得的最长公共前缀即为结果。

代码

 1 class Solution {
 2 public:
 3     string longestCommonPrefix(vector<string>& strs) {
 4         if(strs.empty())
 5             return "";
 6         string longPre = strs[0];
 7         for(int i = 1; i < strs.size(); i++){
 8             longPre = comPre(longPre, strs[i]);
 9         }
10         return longPre;
11     }
12     string comPre(string s1, string s2){
13         int i = 0;
14         string comPre = "";
15         while(i < s1.size() && i < s2.size()){
16             if(s1[i] == s2[i])
17                 comPre += s1[i];
18             else break;
19             i++;
20         }
21         return comPre;
22     }
23 };

猜你喜欢

转载自www.cnblogs.com/wmx24/p/9147545.html