zoukankan      html  css  js  c++  java
  • necklace

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

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

     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]=''; //加一个字符串结尾标志
    30     if(n==m && !strcmp(a+x,b+y)){
    31         puts("Yes");
    32         puts(a+x);
    33     }
    34     else puts("No");
    35 }

     

  • 相关阅读:
    # GIT团队实战博客
    # ML学习小笔记—Where does the error come from?
    # Alpha冲刺3
    # Alpha冲刺2
    # Alpha冲刺1
    # ML学习小笔记—Linear Regression
    # 需求分析报告
    # 团队UML设计
    # 团队选题报告
    Alpha 冲刺 (4/10)
  • 原文地址:https://www.cnblogs.com/hhyx/p/12563471.html
Copyright © 2011-2022 走看看