C++ 实现:从含数字字符串中拼出最大正整数及代码详解
```cpp #include <iostream> #include <string> #include <algorithm> using namespace std; int main() { string s; cin >> s; string digits; // 提取字符串中的数字 for (char c : s) { if (isdigit(c) && c != '0') { digits += c; } } // 对提取的数字进行降序排序 sort(digits.begin(), digits.end(), greater<char>()); // 统计字符串中 0 的数量 int zeroCount = 0; for (char c : s) { if (c == '0') { zeroCount++; } } // 如果有非零数字,在排序后的数字后面添加所有的 0 if (!digits.empty()) { digits.append(zeroCount, '0'); } else { // 如果没有非零数字,最大的正整数就是 0 digits = "0"; } // 输出结果 cout << digits << endl; return 0; } ``` 代码解释: 1. 提取数字:通过遍历输入的字符串 `s`,将其中的非零数字添加到 `digits` 字符串中。 2. 排序:使用 `sort` 函数对 `digits` 字符串中的字符进行降序排序,以确保数字从大到小排列。 3. 统计 0 的数量:再次遍历字符串 `s`,统计其中 0 的数量。 4. 处理 0:如果 `digits` 不为空,在排序后的数字后面添加所有的 0;如果 `digits` 为空,说明没有非零数字,最大的正整数就是 0。 5. 输出结果:将最终的字符串 `digits` 输出。 复杂度分析: - 时间复杂度:$O(n log n)$,主要是排序操作的时间复杂度。 - 空间复杂度:$O(m)$,其中 $m$ 是字符串中数字的数量。 ######[AI问答 | 482点数解答 | 2025-11-02 19:31:09]
- C++ 求解:最少操作次数让字符串无子串 “friend” (字节豆包 | 153点数解答 | 2024-08-17 16:29:54)483
- C++ 求解:最少操作次数让字符串不再含 “friend” 子串!(讯飞星火 | 260点数解答 | 2024-08-17 16:30:49)472
- Python 巧解:最少操作次数让字符串告别“friend”子串(字节豆包 | 139点数解答 | 2024-08-18 13:04:14)408
- 3414 数字游戏:Python 求解 8 位 01 字符串中 1 的个数 (字节豆包 | 106点数解答 | 2024-10-27 14:23:27)433
- 巧用字符添加,计算字符串中“our”最大数量及开发注意要点(DeepSeek | 376点数解答 | 2025-10-30 19:20:06)82
- C 语言实现:处理字符串生成最多 “our” 串,附代码及关键开发注意点 (DeepSeek | 257点数解答 | 2025-10-30 19:20:36)113
- C++ 实现:精准统计给定范围 [L, R] 内数字 2 出现的次数及代码详解(字节豆包 | 401点数解答 | 2026-02-05 21:17:05)46
- C++实现:统计[L, R]范围内数字2出现的次数及代码详解(字节豆包 | 489点数解答 | 2026-02-07 17:12:26)56
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)350
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)234
- 高考毕业晚会难题:从学生能力值求最大默契程度的Python解法(字节豆包 | 487点数解答 | 2026-01-24 13:10:18)45
- Python 正则表达式:从“文本+数字+顿号”字符串中精准提取内容(字节豆包 | 218点数解答 | 2024-11-07 12:17:47)224