[leetcode]Longest Common Prefix

来源:互联网 发布:电脑编程入门教程 编辑:程序博客网 时间:2024/06/03 07:11

Longest Common Prefix

 

Write a function to find the longest common prefix string amongst an array of strings.

解题思路:两两一组进行求最长前缀,然后问题规模减小1/2,依次进行值到最后只剩下一个。


    size_t cmpStr(string &str1, int len1, string &str2, int len2){        size_t i = 0;        while(i < len1 && i < len2){            if(str1[i] != str2[i]) return i;            i++;        }        return i;    }    string longestCommonPrefix(vector<string> &strs) {        string str;        int len = strs.size();                if(len == 0) return str;        if(len == 1) return strs[0];                vector<int> vi;        for(int i = 0; i < len; i++){            vi.push_back(strs[i].size());        }        int l = 0, r = len - 1;        int slen = len;                while(slen > 1){            while(l <= r){                vi[l] = cmpStr(strs[l], vi[l], strs[r], vi[r]);                l++; r--;            }            l = 0;            if(slen & 1){ //长度为奇数                r = slen / 2;                 slen = r + 1;            }else{                r = (slen - 1) / 2;                  slen /= 2;            }        }        string retstr(strs[0], 0, vi[0]);                return retstr;    }


0 0