最长公共子串I-Day001
题目:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:["flower","flow","flight"]
输出:"fl"
示例 2:
输入:["dog","racecar","car"]
输出:""
说明:说有输入只包含小写字母a-z
。
解决方法00:
- 基本思想:
纵向遍历
- 将字符串向量看成二维数组,每个字符串占一行。
- 从第一列开始,每次遍历一列。
- 遇到不同字符停止,确定最长公共前缀。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4rPmndJ4-1685352984145)(D:\beauty_graph\纵向遍历.png)]
2. 代码实现:
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
// write code here
string s = "";
if (strs.size()) { //考虑数组可能为空
int len_min = 5000;
for(int i = 0;i < strs.size();i ++) //确定最短字符
{
if(strs[i].size() < len_min) len_min = strs[i].size();
}
for (int i = 0;i < len_min; i++) {
char t = strs[0][i];
int flag = 1;
for (int j = 1; j < strs.size(); j ++) {
if (t != strs[j][i]) {
flag = 0;
break;
}
}
if (flag) s += t;
else break;
}
}
return s;
}
};
解决方法01:
- 基本方法:
- 代码实现: