重新定义字母大小关系:让 “L 队” 字典序小于 “某 E” 的代码实现与分析
```cpp #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; // 比较函数,用于自定义排序 bool compare(char a, char b, const vector<int>& order) { return order[a - 'a'] < order[b - 'a']; } int main() { string s, t; cin >> s >> t; // 找到第一个不同的字符位置 int i = 0; while (i < s.length() && i < t.length() && s[i] == t[i]) { i++; } // 初始化字母顺序 vector<int> order(26); for (int j = 0; j < 26; j++) { order[j] = j; } // 如果找到了不同的字符,交换它们的顺序 if (i < s.length() && i < t.length()) { int temp = order[s[i] - 'a']; order[s[i] - 'a'] = order[t[i] - 'a']; order[t[i] - 'a'] = temp; } // 根据新的顺序生成字母表 string alphabet = "abcdefghijklmnopqrstuvwxyz"; sort(alphabet.begin(), alphabet.end(), [&](char a, char b) { return compare(a, b, order); }); // 输出新的字母表 cout << alphabet << endl; return 0; } ``` 代码说明: 1. 输入处理:程序首先读取两个字符串 `s` 和 `t`。 2. 寻找不同字符:通过一个循环找到 `s` 和 `t` 中第一个不同的字符位置 `i`。 3. 初始化字母顺序:使用一个长度为 26 的向量 `order` 来存储每个字母的顺序,初始时按照字母表顺序排列。 4. 交换顺序:如果找到了不同的字符,交换它们在 `order` 中的顺序,以确保 `t` 的字典序小于 `s`。 5. 生成新字母表:使用 `sort` 函数根据新的顺序对字母表进行排序。 6. 输出结果:输出排序后的字母表。 复杂度分析: - 时间复杂度:$O(n + 26 log 26)$,其中 $n$ 是字符串的长度。主要时间开销在于寻找不同字符和对字母表进行排序。 - 空间复杂度:$O(26)$,主要用于存储字母顺序。 ######[AI问答 | 595点数解答 | 2025-12-03 19:44:59]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)342
- C++编程:冒泡排序函数模板、txtdata类与bindata类的实现及应用(GPT | 1551点数解答 | 2024-06-01 16:02:33)324
- C++:冒泡排序函数模板与文件读写类(txtdata、bindata)的实现及应用(GPT | 1941点数解答 | 2024-06-01 16:23:06)309
- Python:创建文件、统计单词频率并按字母排序输出的实现(GPT | 697点数解答 | 2024-05-30 10:30:24)260
- Python 实现:将 “k1:1| k2:2| k3:3” 字符串转换为字典并输出(讯飞星火 | 178点数解答 | 2024-06-23 21:53:50)239
- C语言实现:从压缩字符串还原出原始字符串的代码解析(字节豆包 | 299点数解答 | 2024-11-10 19:31:07)280
- C语言:从“长度+字母”压缩串还原原始字符串的代码实现(GPT | 600点数解答 | 2024-11-14 18:24:57)171
- C语言实现:从压缩字符串到解压字符串的巧妙转换(讯飞星火 | 638点数解答 | 2024-11-14 18:25:06)305
- Maxscript 替代 C# 字典与 List:数组使用指南及注意要点(字节豆包 | 183点数解答 | 2025-01-13 22:53:17)288
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)310
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)457
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)353