Longest Common Prefix

来源:互联网 发布:rx480吃鸡优化 编辑:程序博客网 时间:2024/05/16 03:11

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


Solution

一开始只想到从左到右横扫一遍,却没想到 divide and conquer 

class Solution {public:    string longestCommonPrefix(vector<string>& strs) {        if(strs.empty()) return "";                string comp = strs[0];        for( int i = 1; i < strs.size(); i++ ){            if(strs[i].size() < comp.size()) comp = strs[i];        }                int left = 0, right = comp.size() - 1;        while( left <= right ) {            int mid = (left + right) / 2;            bool flag = false;            for (string str : strs) {                if(str == comp) continue;                if(str.substr(0, mid +1) != comp.substr(0, mid + 1)) {                    right = mid - 1; flag = true; break;                }            }            if(!flag) left = mid + 1;        }        return right == -1 ? "" : comp.substr(0, right + 1);    }};


0 0