最長公共字首 -LintCode
阿新 • • 發佈:2019-02-06
給k個字串,求出他們的最長公共字首(LCP)
樣例
在 “ABCD” “ABEF” 和 “ACEF” 中, LCP 為 “A”
在 “ABCDEFG”, “ABCEFG”, “ABCEFA” 中, LCP 為 “ABC”
#ifndef C78_H
#define C78_H
#include<iostream>
#include<vector>
#include<string>
using namespace std;
class Solution {
public:
/**
* @param strs: A list of strings
* @return: The longest common prefix
*/
string longestCommonPrefix(vector<string> &strs) {
// write your code here
if (strs.empty())
return "";
if (strs.size() == 1)
return strs[0];
int pos = 0;//最長公共字首的個數
//對於strs[0][i],判斷strs中是否滿足strs[j][i]==strs[0][i]
for (int i = 0; i < strs[0].size(); ++i)
{
int num = 0;
for (int j = 0; j < strs.size(); ++j)
{
if (j == 0)
num = strs[j][i] - 'a';
if (i == strs[j].size() || strs[j][i] - 'a' != num)
{
return strs[0].substr(0, pos);
}
}
pos++;
}
return pos==0?"":strs[0].substr(0,pos);
}
};
#endif