问题:
Write a function to find the longest common prefix string amongst an array of strings.
分析:
这道题的input是一个vector of strings。首先把这些string中的第一个拿出来作为标准。第一个是谁其实并不重要,它是不是最长的或最短的也不重要,因为common prefix不可能比它长。然后我们保存一个变量rightMost,来表示到目前为止的longest common prefix。然后从1开始,一个string一个string地过。每次更新rightMost,取最小值。
代码:
class Solution {
public:
string longestCommonPrefix(vector<string> &strs) {
if (strs.size() == 0)
return "";
if (strs[0].size() == 0)
return "";
int rightMost = strs[0].size();
for (int i = 1; i < strs.size(); i ++) {
int j = 0;
for (; j < strs[i].size() && j < rightMost; j ++) {
if (strs[i][j] != strs[0][j]){
break;
}
}
rightMost = min(rightMost, j);
}
return strs[0].substr(0, rightMost);
}
};