码迷,mamicode.com
首页 > 其他好文 > 详细

necklace

时间:2020-03-25 01:09:39      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:定义   names   break   font   for   ons   namespace   表示   最小   

# 题意
输入两个字符串,定义两个字符串相等当两个字符串从某一个位置开始顺时针绕一圈后相等就是相同的项链

# 题解
即求出两个字符串的最小表示,最小表示相同则是相同的字符串

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N=1e6+10;
 4 char a[N*2],b[N*2];
 5 int min_string(char *str){
 6     int len=strlen(str+1);
 7     for(int i=1;i<=len;i++)
 8         str[len+i]=str[i];
 9     int i=1,j=2,k;
10     while(i<=len && j<=len){
11         for(k=0;k<len && str[i+k] == str[j+k];k++);
12         if(k==len) break;
13         if(str[i+k]>str[j+k]){
14             i=i+k+1;
15             if(i==j) i++;
16         }
17         else{
18             j=j+k+1;
19             if(i==j) j++;
20         }
21     }
22     return min(i,j);
23 }
24 int main(){
25     scanf("%s",a+1);
26     int n=strlen(a+1),x=min_string(a);
27     scanf("%s",b+1);
28     int m=strlen(b+1),y=min_string(b);
29     a[x+n]=b[y+m]=\0; //加一个字符串结尾标志
30     if(n==m && !strcmp(a+x,b+y)){
31         puts("Yes");
32         puts(a+x);
33     }
34     else puts("No");
35 }

 

 

necklace

标签:定义   names   break   font   for   ons   namespace   表示   最小   

原文地址:https://www.cnblogs.com/hhyx/p/12563471.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!