C++实现计算字符串中循环子串数量
以下是实现该功能的 C++ 代码: ```cpp #include <iostream> #include <string> #include <cctype> // 检查数字循环 bool isDigitCycle(const std::string& s, int start) { if (start + 10 > s.length()) return false; for (int i = 0; i < 9; ++i) { if (!std::isdigit(s[start + i]) || !std::isdigit(s[start + i + 1])) return false; int current = s[start + i] - '0'; int next = s[start + i + 1] - '0'; if ((current + 1) % 10 != next) return false; } return true; } // 检查小写字母循环 bool isLowerCycle(const std::string& s, int start) { if (start + 26 > s.length()) return false; for (int i = 0; i < 25; ++i) { if (!std::islower(s[start + i]) || !std::islower(s[start + i + 1])) return false; int current = s[start + i] - 'a'; int next = s[start + i + 1] - 'a'; if ((current + 1) % 26 != next) return false; } return true; } // 检查大写字母循环 bool isUpperCycle(const std::string& s, int start) { if (start + 26 > s.length()) return false; for (int i = 0; i < 25; ++i) { if (!std::isupper(s[start + i]) || !std::isupper(s[start + i + 1])) return false; int current = s[start + i] - 'A'; int next = s[start + i + 1] - 'A'; if ((current + 1) % 26 != next) return false; } return true; } // 计算循环子串的数量 int countCycles(const std::string& s) { int count = 0; for (int i = 0; i < s.length(); ++i) { if (isDigitCycle(s, i)) { ++count; } if (isLowerCycle(s, i)) { ++count; } if (isUpperCycle(s, i)) { ++count; } } return count; } int main() { std::string input; std::cout << "请输入字符串: "; std::cin >> input; int result = countCycles(input); std::cout << "循环子串的数量是: " << result << std::endl; return 0; } ``` ### 代码解释: 1. **`isDigitCycle` 函数**:用于检查从指定位置开始的长度为 10 的子串是否为数字循环。它会遍历子串,检查每个数字是否比前一个数字递增 1(超过 9 则从 0 开始)。 2. **`isLowerCycle` 函数**:用于检查从指定位置开始的长度为 26 的子串是否为小写字母循环。它会遍历子串,检查每个小写字母是否比前一个字母递增 1(超过 `z` 则从 `a` 开始)。 3. **`isUpperCycle` 函数**:用于检查从指定位置开始的长度为 26 的子串是否为大写字母循环。它会遍历子串,检查每个大写字母是否比前一个字母递增 1(超过 `Z` 则从 `A` 开始)。 4. **`countCycles` 函数**:遍历输入字符串的每个位置,调用上述三个函数检查是否存在循环子串,并统计循环子串的数量。 5. **`main` 函数**:读取用户输入的字符串,调用 `countCycles` 函数计算循环子串的数量,并输出结果。 ######[AI问答 | 972点数解答 | 2026-06-12 19:40:34]
- 易语言读取文本文件并显示到超级列表框:代码示例与注意要点(DeepSeek | 571点数解答 | 2025-08-23 20:54:40)278
- 易语言:读取并显示特定文本到超级列表框,还能增加新数据的方法与要点(DeepSeek | 1317点数解答 | 2025-08-23 20:58:40)276
- C++ 求解:最少操作次数让字符串无子串 “friend” (字节豆包 | 153点数解答 | 2024-08-17 16:29:54)507
- C++ 求解:最少操作次数让字符串不再含 “friend” 子串!(讯飞星火 | 260点数解答 | 2024-08-17 16:30:49)495
- Python 巧解:最少操作次数让字符串告别“friend”子串(字节豆包 | 139点数解答 | 2024-08-18 13:04:14)435
- 3414 数字游戏:Python 求解 8 位 01 字符串中 1 的个数 (字节豆包 | 106点数解答 | 2024-10-27 14:23:27)460
- 巧用字符添加,计算字符串中“our”最大数量及开发注意要点(DeepSeek | 376点数解答 | 2025-10-30 19:20:06)110
- C 语言实现:处理字符串生成最多 “our” 串,附代码及关键开发注意点 (DeepSeek | 257点数解答 | 2025-10-30 19:20:36)158
- mallshop商城网站:数据库设计与强大业务功能全揭秘(GPT | 257点数解答 | 2024-12-09 14:08:15)316
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)438
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)391
- 用Python处理商品销售数据:替换类别、合并类目并输出前5行(百度文心 | 486点数解答 | 2024-08-23 09:14:21)335