Q:
给k个字符串,求出他们的最长公共前缀(LCP)
在 “ABCD” “ABEF” 和 “ACEF” 中, LCP 为 “A”
在 “ABCDEFG”, “ABCEFG”, “ABCEFA” 中, LCP 为 “ABC”
A:
稍微利用一下string.at抛异常。- -!
class Solution {
public:
/**
* @param strs: A list of strings
* @return: The longest common prefix
*/
string longestCommonPrefix(vector<string> &strs) {
std::size_t count = strs.size();
if (!count)
return "";
if (count == 1)
return strs[0];
std::size_t index = 0;
bool mismatch = false;
char temp = 0;
while (true) {
try {
for (std::size_t i = 0; i < count; ++i) {
if ( i == 0 ) {
temp = strs[i].at(index);
} else {
if (strs[i].at(index) != temp) {
mismatch = true;
break;
}
}
}
if (mismatch)
break;
index++;
} catch (...) {
break;
}
}
return index == 0 ? "" : strs[0].substr(0, index);
}
};