LeetCode算法题之Longest Common Prefix

来源:互联网 发布:疯狗雾化器口感数据 编辑:程序博客网 时间:2024/05/21 06:29
问题描述:
Write a function to find the longest common prefix string amongst an array of strings.
从多个字符串中找到他们共同的最长的前缀子串
解题思路:
首先找到这组字符串中最短的那个,以它作为基准进行比较,不断地对它进行截尾,直到找到最长公共子串
耗时10ms
class Solution {public:    string longestCommonPrefix(vector<string> &strs) {        string shortestStr;//最短的字符串int minLen = 1000000;//为空或者vector中仅有一个字符串,无需计算直接返回if(strs.empty())return "";if(strs.size() == 1){    return strs[0];}for(int i=0; i<strs.size(); i++){            if (strs[i].length() == 0)                  return ""; if(strlen(strs[i].data()) < minLen){minLen = strlen(strs[i].data());shortestStr = strs[i];}}        int k=0,j=0;//minLen=minLen<=1?1:minLen;string res="";while(j<strs.size()){if(strs[j].substr(0,minLen) == shortestStr.substr(0,minLen)){k++;j++;if(k==strs.size()){//所有的字符串都有这么一个公共前缀,保存下来并结束循环res = shortestStr.substr(0,minLen);break;}continue;}else{minLen--;k=0;j=0;//如果这些子串中有一个不满足,则最短字符串截尾一位,作为新的可能的公共前缀,一切从头开始比较}}return res;    }};

0 0
原创粉丝点击