字符串的最大最小表示法 模板
生活随笔
收集整理的這篇文章主要介紹了
字符串的最大最小表示法 模板
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#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
總結
以上是生活随笔為你收集整理的字符串的最大最小表示法 模板的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: event(1)
- 下一篇: 如何给CentOS安装字体库