既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
Generally speaking, there are a lot of problems about strings processing. Now you encounter another such problem. If you get two strings, such as “asdf” and “sdfg”, the result of the addition between them is “asdfg”, for “sdf” is the tail substring of “asdf” and the head substring of the “sdfg” . However, the result comes as “asdfghjk”, when you have to add “asdf” and “ghjk” and guarantee the shortest string first, then the minimum lexicographic second, the same rules for other additions.
Input
For each case, there are two strings (the chars selected just form ‘a’ to ‘z’) for you, and each length of theirs won’t exceed 10^5 and won’t be empty.
Output
Print the ultimate string by the book.
Sample Input
asdf sdfg asdf ghjk
Sample Output
asdfg asdfghjk
Author
Wang Ye
Source
Recommend
lcy | We have carefully selected several similar problems for you:
1711
1866
3336
1277
1358
题目意思很简单,不过有点坑的地方在于最后输出的字符串要是最短的并且字典序最小的,
用kmp去找两个字符串相互重叠(a的后缀和b的前缀或者b的前缀和a的后缀)的部分长度是多少,如果a和b 相互重叠的部分一样长,就比较a和b谁的字典序小,然后输出小的那个就好了.
#include <iostream>
#include<string>
#include<cstring>
using namespace std;
string a,b;
int nexts[100005];
void getnext(string b)
{
memset(nexts,0,sizeof(nexts));
nexts[0]=-1;
int k=-1;
int i=0;
![img](https://img-blog.csdnimg.cn/img_convert/77ac537b5ea6de55ed86ee6e4d927ce9.png)
![img](https://img-blog.csdnimg.cn/img_convert/f19f4242b079e066d423a3d53d9429c4.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
csdn.net/topics/618668825)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**