
1. 输入检查
if (n == 0) {return s;
}
- 作用:处理输入为空数组的边界情况,避免后续访问
strs[0]
越界。
2. 逐字符比较
for (int i = 0; i < strs[0].size(); i++) { for (int j = 0; j < n - 1; j++) { if (strs[j][i] != strs[j + 1][i]) {return s; }}s += strs[0][i];
}
- 逻辑:
- 外层循环遍历第一个字符串的每个字符(假设它是公共前缀的基准)。
- 内层循环检查其他字符串的第
i
个字符是否与第一个字符串的第 i
个字符相同。
- 如果发现不匹配,直接返回当前已找到的公共前缀
s
。 - 如果所有字符串的第
i
个字符均相同,将该字符加入 s
。
class Solution {
public:string longestCommonPrefix(vector<string>& strs) {int n=strs.size();string s;if(n==0){return s;}for(int i=0;i<strs[0].size();i++){for(int j=0;j<n-1;j++){ if(strs[j][i]!=strs[j+1][i]){return s;}}s+=strs[0][i];}return s;}
};