在众多字符串算法题中,有一类题目看起来没有太多算法技巧,却经常让人'翻车'——那就是字符串模拟题。这类题型往往不依赖复杂的数据结构或高级算法,更多的是对逻辑构造能力、字符串操作细节以及边界处理的考察。本文将通过几个典型字符串模拟题的拆解,帮助你梳理解题思路、掌握通用技巧,从而在这类题目中稳住基本盘。
14. 最长公共前缀
【题目】:14. 最长公共前缀

【算法思路】
解法一:两两比较

通过两两比较的方式,不断循环寻找字符不相等的位置,利用 substr 接口进行字符串剪切。这里,'最长公共前缀'的意思是根据木桶效应,取最短字符串的长度作为'最长公共前缀'的上限。
【代码实现】
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
// 解法一:两两结合
string tmp = strs[0];
for (int i = 1; i < strs.size(); i++) {
tmp = findPrefix(tmp, strs[i]);
}
return tmp;
}
string findPrefix(string& s1, string& s2) {
int i = 0;
while (i < min(s1.size(), s2.size()) && s1[i] == s2[i]) {
i++;
}
return s1.substr(, i);
}
};










