问题描述
小F是一个好学的中学生,今天他学习了数列的概念。他在纸上写下了一个由 0
和 1
组成的正整数序列,长度为 n
。这个序列中的 1
和 0
交替出现,且至少由 3 个连续的 0
和 1
组成的部分数列称为「神奇数列」。例如,10101
是一个神奇数列,而 1011
不是。现在,小F想知道在这个序列中,最长的「神奇数列」是哪一个。你能帮他找到吗?
如果有多个神奇数列,那么输出最先出现的一个。
测试样例
样例1:
输入:
inp = "0101011101"
输出:'010101'
样例2:
输入:
inp = "1110101010000"
输出:'10101010'
样例3:
输入:
inp = "1010101010101010"
输出:'1010101010101010'
代码实现
#include <iostream>
#include <string>
std::string solution(const std::string& inp) {
// 初始化变量来存储最长神奇数列的起始位置和长度
int max_start = 0;
int max_length = 0;
// 遍历字符串
for (int i = 0; i < inp.size(); ++i) {
// 初始化当前神奇数列的起始位置和长度
int current_start = i;
int current_length = 1;
// 检查是否与前一个字符交替出现
while (i + 1 < inp.size() && inp[i] != inp[i + 1]) {
// 更新当前神奇数列的长度
current_length++;
i++;
}
// 如果当前神奇数列长度达到 3 或以上,检查是否是最长的
if (current_length >= 3 && current_length > max_length) {
max_start = current_start;
max_length = current_length;
}
}
// 返回最长的神奇数列
return inp.substr(max_start, max_length);
}
int main() {
// 添加你的测试用例
std::cout << (solution("0101011101") == "010101") << std::endl;
std::cout << (solution("1110101010000") == "10101010") << std::endl;
std::cout << (solution("1010101010101010") == "1010101010101010") << std::endl;
return 0;
}
功能亮点:云端编辑器
深入剖析
云端编辑器是 AI 刷题平台的一个重要功能亮点。它允许用户在任何设备上随时随地进行编程练习,无需担心本地环境的配置问题。云端编辑器通常集成了多种编程语言的支持,提供实时的代码高亮、自动补全、错误提示等功能,极大地提升了编程效率和学习体验。
对学习的重要性和独特价值
- 跨设备访问:用户可以在手机、平板、笔记本电脑等不同设备上无缝切换,保持学习进度的一致性。
- 实时反馈:云端编辑器可以实时检测代码错误,并提供即时反馈,帮助用户快速定位和解决问题。
- 环境一致性:避免了因本地环境配置不同而导致的代码运行结果不一致的问题,确保学习环境的稳定性。
- 协作与分享:用户可以轻松地将代码分享给他人,进行协作学习和代码审查,提升学习效果。
刷题实践:AI 刷题的优势
优势之处
- 个性化题目推荐:AI 可以根据用户的学习进度和掌握情况,智能推荐适合的题目,帮助用户有针对性地提升薄弱环节。
- 智能解析与提示:AI 可以提供详细的题目解析和代码提示,帮助用户理解题目背后的逻辑和算法。
- 数据分析与反馈:AI 可以分析用户的刷题数据,生成学习报告,帮助用户了解自己的学习情况,制定更有效的学习计划。
通过这些功能,不仅能够高效地完成编程练习,还能深入理解题目背后的逻辑和算法,提升自己的编程能力。
总结
AI 刷题平台的云端编辑器、个性化题目推荐、智能解析与提示、数据分析与反馈等功能,极大地提升了编程学习的效率和效果。