Longest Common Prefix
也是看题目类似,就跳着做题。
题目就是在以string组成的数组中找这些string的最长前缀。
我的思路:
1、第一步先对容器排序,求得数组中最长串的长度MAXLEN。
2、以数组的中元素串第一位开始到MAXLEN循环进行比对,对数组索引进行迭代,来比较数组串中每一个元素串从第一位开始的每一位。
3、如果相等(即一轮比较匹配了数组中所有串的第j个元素)将字符添加到result串中,一旦不相等,立刻break;
代码如下:
bool cmp(const string& s1, const string &s2)
{
return s1.size()<s2.size();
}
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
int i;
int j;
string result = "";
if (strs.size() == 0)
return "";
sort(strs.begin(), strs.end(), cmp);
for (j = 0; j<strs[strs.size() - 1].length(); j++)
{
i = 0;
while (i<(strs.size() - 1) && strs[i][j] == strs[i + 1][j])
{
i++;
}
if (i == strs.size() - 1)
{
result = result + strs[i][j];
}
else
break;
}
return result;
}
};
另:跳着做,前面没做的会补上。