您的位置:首页 > 产品设计 > UI/UE

Longest Common Prefix

2016-05-03 12:08 441 查看
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);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息