hdu2609 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2609 思路:将每个字符串转换成最小串,然后放在set里面去重。最小表示法:循环字符串的最小表示法的问题可以这样描述:对于一个字符串S,求S的循环的同构字符串S’中字典序最小的一个。由于语 ...
分类:
其他好文 时间:
2019-10-27 16:34:10
阅读次数:
87
学习博客: https://blog.csdn.net/zy691357966/article/details/39854359 https://www.cnblogs.com/sweat123/p/4723265.html 循环字符串的最小表示法的问题可以这样描述: 对于一个字符串S,求S的循环的 ...
分类:
其他好文 时间:
2019-08-09 15:27:27
阅读次数:
76
给定一个字符串,从其中一个点开始遍历循环遍历回这个点,如果他的序列比所有这么做获得的字符串的字典序都小,那么他就是这个字符串的最小表示。 比如abba,可以变为bbaa,baab,aabb,其中aabb就是他的最小表示方法。 那么怎么实现这个方法用O(n)来实现呢?先给出代码: 其中也可以把将字符串 ...
分类:
其他好文 时间:
2019-04-30 21:58:15
阅读次数:
146
最小表示法就是对于一个循环字符串,其字典序最小的状态; 显然任意一个循环串的最小表示法是唯一的,那么可以同过比较两个循环串的最小表示法来判断它们是否相同; 对于朴素算法: 初始化:i = 0, j = 1, k = 0; 若 s[i] < s[j],j++; 若 s[i] > s[j],i = j, ...
分类:
其他好文 时间:
2017-06-06 00:55:31
阅读次数:
269
【题目大意】 判断两个字符串是否循环同构。 【思路】 我一开始的做法是直接同时在两个字符串上求最小表示法,只有部分测试点能过,理由未知,以后再来思考。 现在做法:分别求出两个字符串的最小表示法,再比较是否相等。 ...
分类:
其他好文 时间:
2016-08-14 20:45:49
阅读次数:
148
这一周学习到的新算法有两个。 一是循环字符串的最小表示法,这是一个O(n)的算法。主要采用指针滑动的方式。首先定义i和j两个指针,i初始为0,j初始为1, k = 0开始,检验s[i+k] 与 s[j+k] 对应的字符是否相等,如果相等则k++,一直下去,直到找到第一个不同,(若k试了一个字符串的长 ...
分类:
其他好文 时间:
2016-08-07 13:51:49
阅读次数:
127
这道题是最小表示法的一个应用, 代码如下: /* ID: m1500293 LANG: C++ PROG: hidden */ #include <cstdio> #include <algorithm> #include <cstring> using namespace std; char s[
分类:
其他好文 时间:
2016-02-10 17:37:30
阅读次数:
221
题意:
给n个串,问不断的循环左移之后,有几个不相同的串。
思路:
全部转换的成字符串的最小表示法,统计。
裸题存模板
代码:
#include"cstdlib"
#include"cstdio"
#include"cstring"
#include"cmath"
#include"queue"
#include"algorithm"
#include"iostream"
#inclu...
分类:
其他好文 时间:
2015-03-30 16:33:37
阅读次数:
145
给定一个字符串,要求求出从某个下标开始,这个字符串的字典序最小,即字符串的最小表示法比如字符串bbbaaa,从下标3开始表示为aaabbb,字典序最小暴力算法的时间复杂度为O(n^3)但是有线性的算法初始时,让i=0,j=1,k=0;分为三种情况,①如果str[i+k] == str[j+k] k+...
分类:
其他好文 时间:
2014-11-11 18:22:05
阅读次数:
150
字符串的最小表示法,就是对于一个字符串,可以将它的最后一位放到第一位来,依次类推,一共有n种变形,n为字符串长度例如:s="00ab"变形有(省略引号)b00a ab00 0ab0一共4种那么找到其中字典序最小的一个,用的算法便是这个。定义三个指针,i,j,k初始i=0;j=1;k=0首先,如果s[...
分类:
其他好文 时间:
2014-10-07 14:24:53
阅读次数:
131