GESP202403四级:相似字符串判定规则与代码实现全解析
```cpp #include <iostream> #include <string> #include <cmath> using namespace std; bool isSimilar(string A, string B) { int lenA = A.length(); int lenB = B.length(); // 长度差超过1,不可能相似 if (abs(lenA - lenB) > 1) return false; // 完全相同的字符串是相似的 if (A == B) return true; // 长度相等的情况:只能通过修改一个字符 if (lenA == lenB) { int diffCount = 0; for (int i = 0; i < lenA; i++) { if (A[i] != B[i]) { diffCount++; if (diffCount > 1) return false; } } return diffCount == 1; } // 长度相差1的情况:只能通过插入或删除一个字符 // 确保A是较短的字符串 if (lenA > lenB) { swap(A, B); swap(lenA, lenB); } int i = 0, j = 0; int diffCount = 0; while (i < lenA && j < lenB) { if (A[i] == B[j]) { i++; j++; } else { diffCount++; if (diffCount > 1) return false; j++; // 跳过B中不同的字符(相当于在A中插入或在B中删除) } } return true; } int main() { int T; cin >> T; while (T--) { string A, B; cin >> A >> B; if (isSimilar(A, B)) { cout << "similar" << endl; } else { cout << "not similar" << endl; } } return 0; } ``` 解题思路: 1. 长度检查:两个字符串长度差超过1,直接判定不相似。 2. 完全相同:两个字符串完全相同,判定相似。 3. 长度相等:只能通过修改一个字符,检查不同字符数量是否为1。 4. 长度差1:只能通过插入或删除一个字符,使用双指针遍历,允许一次不匹配。 时间复杂度:O(n),n为字符串长度。 空间复杂度:O(1)。 ######[AI问答 | 525点数解答 | 2025-12-22 20:32:06]
- GESP202403四级:相似字符串判定规则与代码实现全解析 (DeepSeek | 525点数解答 | 2025-12-22 20:32:06)44
- C++ 求解:最少操作次数让字符串无子串 “friend” (字节豆包 | 153点数解答 | 2024-08-17 16:29:54)478
- C++ 求解:最少操作次数让字符串不再含 “friend” 子串!(讯飞星火 | 260点数解答 | 2024-08-17 16:30:49)466
- Python 巧解:最少操作次数让字符串告别“friend”子串(字节豆包 | 139点数解答 | 2024-08-18 13:04:14)401
- 3414 数字游戏:Python 求解 8 位 01 字符串中 1 的个数 (字节豆包 | 106点数解答 | 2024-10-27 14:23:27)429
- 巧用字符添加,计算字符串中“our”最大数量及开发注意要点(DeepSeek | 376点数解答 | 2025-10-30 19:20:06)80
- C 语言实现:处理字符串生成最多 “our” 串,附代码及关键开发注意点 (DeepSeek | 257点数解答 | 2025-10-30 19:20:36)108
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)345
- 游戏技能代码深度剖析:潜在问题、改进方案与处理要点(字节豆包 | 1426点数解答 | 2025-10-16 15:31:36)109
- Golang开发:解析JSON数据时数值默认类型及示例解析(百度文心 | 393点数解答 | 2023-11-09 18:13:06)278
- SQL Working Areas Sizing: Manual vs. Automatic Policy - A Comprehensive Analysis(阿里通义 | 530点数解答 | 2024-05-13 10:55:58)308
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)314