博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串最小表示法(1) 朴素算法
阅读量:6811 次
发布时间:2019-06-26

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

循环字符串的最小表示法的问题可以这样描述:

对于一个字符串S,求S的循环的同构字符串S’中字典序最小的一个。

由于语言能力有限,还是用实际例子来解释比较容易:

设S=bcad,且S’是S的循环同构的串。S’可以是bcad或者cadb,adbc,dbca。而且最小表示的S’是adbc。
对于字符串循环同构的最小表示法,其问题实质是求S串的一个位置,从这个位置开始循环输出S,得到的S’字典序最小。
一种朴素的方法是设计i,j两个指针。其中i指向最小表示的位置,j作为比较指针。

令i=0,j=1

如果S[i] > S[j] i=j, j=i+1
如果S[i] < S[j] j++
如果S[i]==S[j] 设指针k,分别从i和j位置向下比较,直到S[i] != S[j]
         如果S[i+k] > S[j+k] i=j,j=i+1
         否则j++
返回i

代码如下
int getans(int *S,int lens){	int i=0,j=1,k;	while(j!=lens)	{		if(S[i]>S[j]) i=j,j=i+1;		else if(S[i]
S[j+k]) i=j,j=i+1; else if(S[i+k]

转载于:https://www.cnblogs.com/zy691357966/p/5480473.html

你可能感兴趣的文章
python中的面相对象
查看>>
Spring缓存注解@Cache使用
查看>>
基于Three.js的360度全景--photo-sphere-viewer--简介
查看>>
去除wordpress的category各方法对比
查看>>
『Github』简易使用指南
查看>>
实例解读:网络设备热备部署的三种模式
查看>>
<a>标签中的href如何调用js代码
查看>>
在github上搭建个人博客
查看>>
19.QT-事件发送函数sendEvent()、postEvent()
查看>>
.gitkeep
查看>>
JavaScript 中的12种循环遍历方法
查看>>
springcloud~演化的微服务架构
查看>>
原生JS实现new方法、new一个对象发生的四部、new里面常用的优先级
查看>>
Android GreenDao清空数据库的方法
查看>>
新建git并将本地代码上传到分支
查看>>
CentOS7 安装 mysql8
查看>>
区块链钱包的工作原理
查看>>
高效方便的IO库: System.IO.Pipelines
查看>>
分析轮子(三)- 十进制整数怎么变成无符号二进制的整数的
查看>>
vue - 使用axios
查看>>