react和vue的比较
相同
1)vitual dom
2)组件化
3)props,单一数据流
不同点
1)react是jsx和模板;(jsx可以进行更多的js逻辑和操作)
2)状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)
这不就与题意很相似了,我们只需要把两个字符串连接在一起就可以了
然后我们比较高度数组的大小即可
需要注意:
-
因为比较高度数组时,可能两个相邻的后缀是在同一个字符串中,所以我们需要先判断后缀是从哪开始的
-
这时候又会出现另一种情况,可能有个后缀经过了两个字符串,这种情况判断,两个后缀是从不同字符串开始的,无法判断出来,所以我们要在连接两个字符串时,在中间加上一个在字符串中不会出现的字符 ( 例:S = a + ‘\0’ + b )
#include
#include <stdio.h>
#include
#include
using namespace std;
string S;
int sa[20005], rk[20005], tmp[20005], lcp[20005];
int k;
bool cmp(int a, int b)
{
if(rk[a] == rk[b])
{
int i = a + k <= S.length() ? rk[a + k] : -1;
int j = b + k <= S.length() ? rk[b + k] : -1;
return i < j;
}
return rk[a] < rk[b];
}
void construct_sa()
{
for(int i = 0; i <= S.length(); i++)
{
sa[i] = i;
rk[i] = i < S.length() ? S[i]: -1;
}
for(int i = 1; i <= S.length(); i = i * 2)
{
k = i;
sort(sa, sa + S.length() + 1, cmp);
tmp[sa[0]] = 0;
for(int i = 1; i <= S.length(); i++)
{
tmp[sa[i]] = tmp[sa[i-1]] + (cmp(sa[i-1], sa[i]) ? 1 : 0);
}
for(int i = 0; i <= S.length(); i++)
{
rk[i] = tmp[i];
}
}
}
void construct_lcp()
{
int h = 0;
for(int i = 0; i < S.length(); i++)
{
int j = rk[i] - 1;
最后
我可以将最近整理的前端面试题分享出来,其中包含HTML、CSS、JavaScript、服务端与网络、Vue、浏览器、数据结构与算法等等,还在持续整理更新中,希望大家都能找到心仪的工作。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
篇幅有限,仅展示部分截图:
g.csdnimg.cn/img_convert/b24f32dd81ead796fa80c27c763d262c.png)