博客
关于我
蓝桥杯 周期子串 C++算法提高 HERODING的蓝桥杯之路
阅读量:155 次
发布时间:2019-02-28

本文共 959 字,大约阅读时间需要 3 分钟。

为了找出给定字符串的最小周期,我们可以使用暴力解法。通过遍历所有可能的周期长度,我们检查每个长度是否满足条件,从而确定最小的周期长度。

方法思路

  • 问题分析:我们需要找出字符串的最小周期,即字符串可以被分解为一个或多个相同子串连接而成的最小长度。
  • 暴力解法:遍历从1到字符串长度的所有可能周期长度k。对于每个k,检查字符串是否由k长度的重复子串构成。
  • 检查条件:对于每个k,首先检查字符串长度是否能被k整除。如果可以,检查每个字符是否与其在基准子串中的位置相同。
  • 优化:一旦找到满足条件的最小k,直接返回结果,避免不必要的计算。
  • 解决代码

    #include 
    using namespace std;int main() { char s[100]; int n = strlen(s); for (int k = 1; k <= n; ++k) { if (n % k != 0) { continue; } bool valid = true; for (int i = 0; i < n; ++i) { if (s[i] != s[i % k]) { valid = false; break; } } if (valid) { cout << k << endl; return 0; } } // 根据题目,所有情况都能找到周期,因此无需处理 return n;}

    代码解释

  • 读取输入:字符串 s 被读取,长度为 n
  • 遍历可能的周期长度:从1到 n 遍历每个可能的周期长度 k
  • 检查整除性:如果 n 不能被 k 整除,跳过当前 k
  • 验证周期性:检查字符串是否由 k 长度的重复子串构成。取前 k 个字符作为基准,逐个字符检查后续字符是否与基准字符相同。
  • 输出结果:找到最小的满足条件的 k,输出并结束程序。
  • 这种方法确保了我们能准确找到字符串的最小周期,并且在合理的时间内完成计算。

    转载地址:http://ockj.baihongyu.com/

    你可能感兴趣的文章
    NIO同步网络编程
    查看>>
    NIO基于UDP协议的网络编程
    查看>>
    NIO笔记---上
    查看>>
    NIO蔚来 面试——IP地址你了解多少?
    查看>>
    NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
    查看>>
    NISP国家信息安全水平考试,收藏这一篇就够了
    查看>>
    NIS服务器的配置过程
    查看>>
    Nitrux 3.8 发布!性能全面提升,带来非凡体验
    查看>>
    NiuShop开源商城系统 SQL注入漏洞复现
    查看>>
    NI笔试——大数加法
    查看>>
    NLog 自定义字段 写入 oracle
    查看>>
    NLog类库使用探索——详解配置
    查看>>
    NLP 基于kashgari和BERT实现中文命名实体识别(NER)
    查看>>
    NLP 模型中的偏差和公平性检测
    查看>>
    Vue3.0 性能提升主要是通过哪几方面体现的?
    查看>>
    NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
    查看>>
    NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
    查看>>
    NLP三大特征抽取器:CNN、RNN与Transformer全面解析
    查看>>
    NLP学习笔记:使用 Python 进行NLTK
    查看>>
    NLP度量指标BELU真的完美么?
    查看>>