#include<iostream>
#include<string>
using namespace std;
/*
用最小表示法求字符串S的最小字典序
返回字典序最小的串的首字母位置
*/
int minstr(char s[])
{int len=strlen(s);int i=0,j=1;while(i<=len-1 && j<=len-1){int k=0;while(k<=len-1 && s[(i+k)%len]==s[(j+k)%len])k++;if(k>=len)break;if(s[(i+k)%len]>s[(j+k)%len])i=max(i+k+1,j+1);////此时s[i+1]到s[i+k]都不可能是最小字符串的开头,而且s[i+1]到s[j]也不可能是最小字符串的开头(s[i]开头的字符串与s[j]开头的字符串在比较,本身已经说明s[i]开头的字符串小于以s[i+1]开头到以s[j-1]开头的字符串了)elsej=max(j+k+1,i+1);//同上道理
    }return min(i,j);
}
/*
用最大表示法求字符串S的最大字典序
返回字典序最大的串的首字母位置
*/
int maxstr(char s[])
{int len=strlen(s);int i=0,j=1;while(i<=len-1 && j<=len-1){int k=0;while(k<=len-1 && s[(i+k)%len]==s[(j+k)%len])k++;if(k>=len)break;if(s[(i+k)%len]<s[(j+k)%len])i=max(i+k+1,j+1);elsej=max(j+k+1,i+1);}return min(i,j);
}
int main()
{return 0;
}

转载于:https://www.cnblogs.com/Blundering-Chen/p/4012574.html

字符串的最大最小表示法 模板相关推荐

  1. 字符串处理 —— 最大最小表示法

    [概述] 最大最小表示法用于解决字符串的同构问题,其在复杂度为 O(n) 的时间内求出一个字符串的所有同构串中字典序最大(小)的串的起始位置. 应用: 给出 n 个循环字符串判断有多少不同字符串:逐个 ...

  2. 字符串循环同构的最小表示法(转)

    循环字符串的最小表示法的问题可以这样描述: 对于一个字符串S,求S的循环的同构字符串S'中字典序最小的一个. 由于语言能力有限,还是用实际例子来解释比较容易: 设S=bcad,且S'是S的循环同构的串 ...

  3. BZOJ2176Strange string——最小表示法

    题目描述 给定一个字符串S = {S1, S2, S3 - Sn}, 如果在串SS中, 子串T(|T| = n)为所有长度为n的SS的字串中最小的(字符串的比较), 则称T为"奇怪的字串&q ...

  4. 『最小表示法 Necklace』

    最小表示法 这是一个简单的字符串算法,其解决的问题如下: 给定一个字符串\(S\),长度为\(n\),如果把它的最后一个字符不断放到最前面,会得到\(n\)个不同的字符串,那么我们称这\(n\)个字符 ...

  5. 最小表示法(转自CSDN xiaoc's home)

    循环字符串的最小表示法的问题可以这样描述: 对于一个字符串S,求S的循环的同构字符串S'中字典序最小的一个. 由于语言能力有限,还是用实际例子来解释比较容易: 设S=bcad,且S'是S的循环同构的串 ...

  6. 几个冷门字符串算法的学习笔记(最小表示法,exKMP,Lyndon Word)

    所有下标均从1开始 最小表示法 给定一个串,求字典序最小的循环同构. 我们把串复制一遍接在后面,然后求出[1,N][1,N][1,N]开始的长为NNN的子串中最小的 先设i=1,j=2i=1,j=2i ...

  7. 树的同构模板题(法1.最小表示法+法2.树哈希)

    树的同构 problem solution code solution code problem 模板题 solution Ⅰ. 最小表示法 将树转化为 0/10/10/1 括号序列:从根开始 dfs ...

  8. BZOJ1398: Vijos1382寻找主人 Necklace 字符串最小表示法

    Description 给定两个项链的表示,判断他们是否可能是一条项链. Input 输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的). Output 如果 ...

  9. zcmu1550(字符串最小表示法)

    1550: AA Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 125  Solved: 35 [Submit][Status][Web Board] ...

最新文章

  1. spring aop原理_Spring知识点总结!已整理成142页离线文档(源码笔记+思维导图)...
  2. 数据挖掘 —— 无监督学习(关联)
  3. python os 文件操作 getcwd()方法
  4. HDU 2115 -I Love This Game
  5. HUST软工1506班第2周作业成绩公布
  6. 576. 出界的路径数
  7. Java防止用户同一时间重复登录(包括异地登录)
  8. 陶哲轩实分析习题8.5.1
  9. MyBatis源码分析(三):MyBatis初始化(配置文件读取和解析)
  10. 求反关系运算符:“服从分布”的符号表示 与 “不服从分布”的符号表示
  11. zookeeper 与dubbo管理平台Window 安装与使用
  12. 网吧技术员应聘问卷你能答多少
  13. vscode生成vue模板快捷键_vscode之快速生成vue模板
  14. ICP备案线下注销 网站域名备案注销
  15. BZOJ3420[POI2013]Triumphal archBZOJ5174[Jsoi2013]哈利波特与死亡圣器——树形DP+二分答案...
  16. Skydio 2在行动中的第一响应者部署显示了无人机自主权
  17. 数字图像处理(入门篇)十四 透视变换
  18. pip install -U里面的-U是什么意思
  19. 手机游戏运行时分析工具
  20. 云服务器与虚拟主机有什么区别,我们应该如何选择?

热门文章

  1. 10本计算机视觉必读经典图书,入门篇 + 提升篇
  2. 关于位运算的错误问题
  3. linux删除旧网卡,如何删除旧网卡驱动
  4. java 按钮文字_java Button中的标签怎样显示汉字?
  5. 贴片按键开关_轻触开关的常用类型和规格型号
  6. 理解线程池中线程的复用原理
  7. Shiro总是将我重定向到login.jsp
  8. 020_MySQL运算符
  9. mysql 万亿数据_sql-server – 哪个数据库可以处理数十亿/数万亿条记录的存储?...
  10. GoldWave合并多段音乐,去除噪音,剪切想要的片段