周期串(Periodic Strings)

2023-11-29 02:12
文章标签 周期 strings periodic

本文主要是介绍周期串(Periodic Strings),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

做了我两个小时,我真的裂开

之前已经发过一次了,走在回宿舍的路上突然发现有些情况并不适用,赶紧删掉了

题目如下:

如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。例如:abcabcabcabc以3为周期(注意,它也以6和12为周期)

输入一个长度不超过80的字符串,输出其最小周期

一些测试点:

abcab

abcababcab

ababc

ababcababc

abcababcabcababc

ababcababc

最后一个就是我路上想出来的,上一个代码并不适用的测试点

第一次的思路是一个字符数组记录暂时重复的字符串,另一个是记录和上一个字符数组相同部分的字符串,一旦出现不同,就把第二个字符串接到第一个上面去

第二次的思路是整个字符串都放在一个数组里面,然后用length记录重复串的长度,前length个字符就是重复串,而count记录暂时相同的的字符串长度,然后一一比较,一旦出现不同length就加上count(count为0就加1)

两个思路都不行,问题在于,如果length一下延长很多,可能会出事

那延长的长度控制在1就行了

这是第三个思路

代码如下:

#include<stdio.h>
#include<string.h>int main(void)
{char str[81] = {'\0'};scanf("%s", str);int len = 1, count = 0;for(int i = 1; i < (int)strlen(str); i++)if(str[i] == str[count])count++;elselen++, i = len - 1, count = 0;printf("%d", len);return 0;
}

虽然count会超过len,但是不会影响比较

。。。

或许以后碰到类似的题就可以秒了

引以为戒

看着简单的题还是要多手动写写

这篇关于周期串(Periodic Strings)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/431076

相关文章

【无线通信发展史⑧】测量地球质量?重力加速度g的测量?如何推导单摆周期公式?地球半径R是怎么测量出来的?

前言:用这几个问答形式来解读下我这个系列的来龙去脉。如果大家觉得本篇文章不水的话希望帮忙点赞收藏加关注,你们的鼓舞是我继续更新的动力。 我为什么会写这个系列呢? 首先肯定是因为我本身就是一名从业通信者,想着更加了解自己专业的知识,所以更想着从头开始了解通信的来源以及在每一个时代的发展进程。 为什么会从头开始写通信? 我最早是学习了中华上下五千年,应该说朝代史,这个算个人兴趣,从夏

用ACF和PACF计算出一堆数据的周期个数以及周期时长,数据分析python

具体步骤 1使用ACF和PACF:可以通过查看ACF图中的周期性峰值,找到数据中的周期性。如果ACF图在某个滞后期处出现显著的正相关峰值,并且这种模式在多个滞后周期中重复出现,这就是周期性信号的特征。而PACF则可以帮助确定延迟的直接影响。 2找周期数和周期长度:周期的时长可以通过ACF中第一个显著的峰值(排除滞后期为0时的峰值)来确定,而周期的个数则可以通过分析整个序列中的周期性重复次数来估计

AI超周期现状 - NVIDIA、苹果以及人工智能的整体需求

于2024年6月6日在中国杭州拍摄的英伟达和苹果的标志。到6月5日,东部时间,英伟达的市值超过3万亿美元,正式超越苹果的市值,成为全球市值第二大的科技巨头。值得注意的是,短短3个多月时间里,英伟达的市值就从2万亿美元飙升至3万亿美元。(由Costfoto摄于NurPhoto,经盖蒂图片社批准) 在九月初经历了几天的市场动荡后,又有一波关于人工智能超级周期是否已结束的讨论。如果没有结束,那接下来会

Java高级编程—多线程(完整详解线程的三种实现方式、以及守护线程、出让线程、插入线程、线程声明周期等,附有代码+案例)

二十八.多线程 文章目录 二十八.多线程28.1线程的三种实现方式28.1.1 第一种28.1.2 第二种28.1.3 第三种 28.2 常见的成员方法28.3 守护线程28.4 出让线程28.5 插入线程28.6 线程生命周期28.7 同步代码块28.8 同步方法 28.1线程的三种实现方式 继承Thread类的方式进行实现实现Runnable接口的方式进行实现利用Ca

[LeetCode] 583. Delete Operation for Two Strings

题:https://leetcode.com/problems/delete-operation-for-two-strings/description/ 题目 Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 the same, where in

【C++学习笔记 19】C++中的对象生存周期

对象如何生存在栈上 在C++中,我们每次进入一个作用域时,我们就是在push栈帧。就像把书堆叠起来,将最新的书放在最上层,在这个作用域上创建变量就像在书中写内容,当作用域结束的时候,就把书拿走,此时每个基于栈的变量就结束了。 举个例子 #include <iostream>#include <string>class Entity{public:Entity(){std::cout <

Swift 3.0 学习 -- 大写和小写字符串(Uppercase and Lowercase Strings)

在swift2.0的时候,您可以通过字符串的uppercaseString和lowercaseString属性来访问大写/小写版本的字符串。如下:

If an application has more than one locale, then all the strings declared in one language should als

字符串资源多国语言版本的出错问题 假如你仅仅针对国内语言 加上这句即可 //保留中文支持resConfigs "zh"

JavaScript - First step - Strings

var string = 'The revolution will not be televised.';var string = "The revolution will not be televised."; 转义字符 var bigmouth = 'I\'ve got no right to take my place...';bigmouth; 字符串连接 var one =

【Go】strings.Replace 与 bytes.Replace 调优

原文链接:https://blog.thinkeridea.com/201902/go/replcae_you_hua.html 标准库中函数大多数情况下更通用,性能并非最好的,还是不能过于迷信标准库,最近又有了新发现,strings.Replace 这个函数自身的效率已经很好了,但是在特定情况下效率并不是最好的,分享一下我如何优化的吧。 我的服务中有部分代码使用 strings.Replac