首页 > 代码库 > 字符串的最大最小表示法 模板
字符串的最大最小表示法 模板
#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]开头的字符串了) else j=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); else j=max(j+k+1,i+1); } return min(i,j);}int main(){return 0;}
字符串的最大最小表示法 模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。