酷代码 AI
菜单
服务商
DeepSeek字节豆包
更多选项

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]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]