题目链接
题目大意
题目说得很明白了,这里不再赘述。
解题思路
利用暴力的方法对所有字符串依次检查第一个位置的字符,第二个位置的字符……对每个位置上的字符计数,如果计数之和等于字符串的个数说明这个位置上的这些字符都相等,否则说明有不相同的字符,即不为公共前缀,处理至此即可结束。
参考代码如下。
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if (strs.size() == 0)
return "";
for (int i = 0; ;i++) {
int cnt[256] = {0};
char c;
for (string s: strs)
if (i < s.size()) {
c = s[i];
cnt[c]++;
}
else
return strs[0].substr(0, i);
if (cnt[c] != strs.size())
return strs[0].substr(0, i);
}
}
};
解题感悟
这应该是很笨的一种办法了,官方给出了好几种解法,需要认真研读一下。