这里主要的一个思想是,如果能经过n次循环相等,必然存在str1的前半段和str2的后半段相等。

利用这一性质,就不难写出代码了

之前有考虑过制表,但发现制表也不能增快速度,就放弃了

//没有对二叉堆进行封装,因为没有必要
#define _CRT_SECURE_NO_DEPRECATE
#define maxn 100001
#include<stdio.h>
#include<string.h>
using namespace std;
char str1[maxn];
char str2[maxn];
int find_in2(char*str1,char*str2)
{auto mi = 0;while (str2[mi++] != str1[0]);return --mi;
}
int answer = 0;
int position;
bool compare(int&head2,int l1,int head1,char*str1,char*str2)
{position = head2;int second_start=0;auto temp = head1;while (str1[head1++] == str2[head2++]&&head2<l1) {if (!second_start&&str2[head2] == str1[temp])second_start = head2 ;}if (str1[head1 - 1] == str2[head2 - 1]) { answer = 1; return true; }else {if(second_start)head2 = second_start;else while (head2 < l1&&str2[head2] != str1[temp])head2++;return false;}
}
bool check_rest(int l1,char*str1,char*str2)
{int i = 0, j = l1 - position;while (i < position&&str2[i++] == str1[j++]);return i == position ? true : false;
}
int main()
{
#ifndef _OJ_freopen("cycle.txt", "r", stdin);// freopen("travelout.txt", "w", stdout);
#endifwhile (scanf("%s %s", &str1, &str2)!=EOF){answer=0;int l1 = strlen(str1), l2 = strlen(str2);if (l1 == l2) {int compare_head = find_in2(str1,str2);auto temp = compare_head;while (!compare(compare_head, l1, 0, str1, str2) && compare_head < l1);if (answer&&check_rest(l1,str1,str2))printf("YES\n");else printf("NO\n");}else printf("NO\n");}
}

清华数据结构循环位移AC100相关推荐

  1. 清华数据结构任务调度AC100

    这里要注意以下几点: 1.由于是不超过8位的字符串,因此在构造字符串的时候应当保证是char xx[9]:如果不是9,是别的话,那么字符数组会装不下,这样会导致最终的结果出现问题.这种情况已经发生过很 ...

  2. 清华数据结构平均气温AC100

    写在最前: 这道题,其实最节约时间的算法应该是用FC tree,用该数据结构可以在logn的时间内算出来. 但是,说实话,我写不出这样的树出来,至少目前没必要,因为这样太麻烦了,关键是指针不好指. 所 ...

  3. 清华数据结构列车调度AC100分

    两种思路 (1)将目标栈的数据和待混洗的数据逐个进行比较 #pragma warning(disable:4996) #include<stdio.h> #include<strin ...

  4. 清华数据结构真二叉树重建AC100

    该题难点主要在于如何判断哪边是左子树,哪边是右子树 假设先序序列为a[maxn],后序序列为b[maxn] 对于类似数据为 13 1 2 4 6 10 9 12 13 7 11 8 5 3 10 12 ...

  5. 清华数据结构重名剔除AC100

    1.首先需要找打大于600000的最大素数,寻找素数的方法,我用的是比较笨的方法,就是用x的平方根以下的数y去除,若x%y全部都不为0,则为素数. 2.对每一个菜谱进行编码,我的编码方法如下,具体的编 ...

  6. 清华数据结构无线广播AC100

    #pragma warning(disable:4996) #include<stdio.h> using namespace std; #define maxn 10000 #defin ...

  7. 【学堂在线】清华数据结构 OJ小记录

    MOOC数据结构 OJ题记录 PA1-1 范围查询 (对应课程:绪论+向量) PA1-2 祖玛问题 (对应课程:列表) PA 1-3 灯塔(归并) PA 2-1 列车调度(栈) PA 2-2 真二叉树 ...

  8. 清华数据结构PA7——无线广播(Broadcast)

    题目:https://dsa.cs.tsinghua.edu.cn/oj/problem.shtml?id=1148 思路很简单,选取一个无前驱的点,给定一个fm然后进行bfs,将其相邻的点给定一个与 ...

  9. 清华计算机考研csp,「考研2021」400分跨考清华大学软件学院经验帖

    基本信息:应届武汉大学本科生 跨考清华计算机系学硕拟录取.学硕面试结束,一切尘埃落定,趁现在回忆还比较清晰,记录下一年来的奋斗历程,以供诸君参考. 择校 择校当时拟定的有三所:浙大,北大,清华.然而北 ...

最新文章

  1. 云炬随笔20210930
  2. tensorflow神经网络结构可视化
  3. 一个C#读写Dxf的类库DXFLibrary
  4. 解决ueditor jquery javascript 取值问题
  5. mysql memcached 使用场景_memcache 应用场景
  6. yy神曲url解析php_php解析url的三个示例
  7. PTA c语言 统计一行文本的单词个数
  8. 使用GridFsTemplate来实现文件归类
  9. Vscode合并develop代码分支到master开发分支
  10. 反相高低频技术磨皮法
  11. 艺术留学|工业设计专业2019大学新排名
  12. matlab中clc、clear、clear all、clf、close、close all命令
  13. 判断闰年和平年的程序
  14. 元宵佳节,戴铭老师亲自带你分析iOS行业动态!
  15. Web开发应了解的5种设计模式(转)
  16. 【恩墨学院】为什么用尽了办法你的系统性能还是不见改善?
  17. IPFS终将沦为大型韭菜收割机
  18. Python爬虫之爬取淘女郎照片示例详解
  19. Vmware ESXI 6.7升级版本
  20. python-微信自动发送信息2

热门文章

  1. MCGS用脚本设置屏幕背光和声音
  2. 手机证件照怎么压缩?如何把手机证件照压缩到10K?
  3. 从QQ空间技术分享中收获的几点总结
  4. VBA实例1 Excel人员资质及证件管理
  5. 宝塔安装swoole 及几十万微信模板消息异步发送
  6. Scrum板与Kanban如何抉择?敏捷工具:jlsio板与按照cnxlkfzh
  7. 2018大连理工计算机考研科目,2018考研大连理工大学优势科目专业
  8. 深度学习笔记(四)(1)卷积神经网络
  9. DataFrame 窗口函数rolling()
  10. Aerospike入坑导读