You are given two long strings AA and BB. They are comprised of lowercase letters. You should compute how many suffixes of AA are the prefixes of BB.

Input

In the first line is a number TT (0<T≤1000<T≤100) , indicating the cases following.
In the next T lines each line contains two strings — AA and BB.
( 0<|A|≤105,0<|B|≤1050<|A|≤105,0<|B|≤105)

Output

There should be exactly TT lines.
Each line contain a number — the answer.

Sample Input

1
abcc ccba

Sample Output

2

HINT

In the first case, cc and c are two of the suffixes of string A, and they are the prefixes of string B.

题意:问给你两个字符串A和B,其中A的后缀也是B的前缀的子串有多少个。

题解:很简单的字符串hash问题,

设i是从 0 循环到min(lenA,lenB)

hasha += Base^n * A[lenA-1-i];

hashb = hashb * Base + B[i];

然后判断hasha == hashb 那么cnt++

代码:

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef unsigned long long ull;
const ull Base = 100000007;
const ull MAX = 1e5+5;
char A[MAX],B[MAX];
int main()
{int T;scanf("%lld",&T);while(T--){scanf("%s %s",A,B);ull lenA = strlen(A),ull asum = 0;ull lenB = strlen(B),ull bsum = 0;ull t = 1;int ans = 0;for(int  i = 0;i < min(lenA,lenB);i++){asum += t*A[lenA-1-i];bsum = bsum * Base + B[i];t *= Base;if(asum == bsum) ans++;}cout<<ans<<endl;}return 0;
}

公共子串 字符串哈希相关推荐

  1. 回文字串-字符串哈希

    回文子串-字符串哈希 前言 求解回文字串问题不仅可以用马拉车算法 ( O ( n ) ) (O(n)) (O(n)),也可以用字符串哈希 ( O ( n l o g n ) ) (O(nlogn)) ...

  2. DP之钢管切割,最长回文字符串,最长公共子串

    在做LeetCode第3题的时候,用到了DP,但是自己对DP还是不了解,所以翻开算法导论,开始看动态规划喽,学好动态规划,走遍天下都不怕. 钢管切割 对于一根长n米的钢管,每个长度的价格不一样,对于长 ...

  3. SPOJ - PHRASES Relevant Phrases of Annihilation —— 后缀数组 出现于所有字符串中两次且不重叠的最长公共子串...

    题目链接:https://vjudge.net/problem/SPOJ-PHRASES PHRASES - Relevant Phrases of Annihilation no tags  You ...

  4. 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离

    最大子序列 最大子序列是要找出由数组成的一维数组中和最大的连续子序列.比如{5,-3,4,2}的最大子序列就是 {5,-3,4,2},它的和是8,达到最大:而 {5,-6,4,2}的最大子序列是{4, ...

  5. Algorithm:C++/python语言实现之求旋转数组最小值、求零子数组、求最长公共子序列和最长公共子串、求LCS与字符串编辑距离

    Algorithm:C++/python语言实现之求旋转数组最小值.求零子数组.求最长公共子序列和最长公共子串.求LCS与字符串编辑距离 目录 一.求旋转数组最小值 1.分析问题 2.解决思路 二.求 ...

  6. 面试宝典_Python.常规算法.0002.输出任意两个字符串中最长公共子串?

    面试题目: 1. 用PY实现求任意两个字符串最长的公共子串? 解题思路: 1. 先求出长度最小的字符串,然后遍历其索引,这样可以避免字符串索引溢出,然后判断对应索引的值是否相同,相同的话就加到目标字典 ...

  7. cstring查找子字符串_动态规划6:两个字符串的最长连续公共子串

    本文和前一篇:动态规划5-两个字符串的最长公共子序列类似,但公共子串必须是连续的,子序列不需要连续 字符串a,长度为m:a[1].a[2].a[3].a[4]....a[m] 字符串b,长度为n:b[ ...

  8. C语言两个字符串查找最长的公共子串的算法(附完整源码)

    C语言两个字符串查找最长的公共子串的算法 C语言两个字符串查找最长的公共子串的算法完整源码(定义,实现,main函数测试) C语言两个字符串查找最长的公共子串的算法完整源码(定义,实现,main函数测 ...

  9. 查找两个字符串a,b中的最长公共子串

    查找两个字符串a,b中的最长公共子串 文章目录 查找两个字符串a,b中的最长公共子串 一.题目描述 二.代码 一.题目描述 题目描述: 查找两个字符串a,b中的最长公共子串.若有多个,输出在较短串中最 ...

最新文章

  1. 7 款可替代 top 命令的工具!(二)
  2. Scala与Java交互
  3. Cocos2d-x游戏中默认的AndroidManifest.xml的解析
  4. NYOJ 289 苹果(01背包)
  5. python继承属性_python继承,属性查找顺序
  6. 【工程项目经验】mac电脑lldb调试工具
  7. python的setting怎么找_vscode配置python之settings.json 智能提示
  8. Linux命令df,du 查看系统磁盘空间
  9. vc c mysql_VC++ 利用 MySQL connector c 访问MySQL 数据库
  10. 一次生产内存溢出记录
  11. URLClassLoader使用方法及事例程序
  12. 应用java编写 按键小脚本_一个使用JAVA编写的类似按键精灵的程序,支持脚本文件编写(含源代码) | 学步园...
  13. Android ImageButton示例
  14. 电脑连接ios开发配置
  15. 总结2016,展望2017
  16. Docker报错:E: Unable to locate package python3
  17. 《ERP高级计划》书的解读- APS算法分析之四约束规划CP(蔡颖)(转)
  18. CocosCreator h5游戏移动端全屏显示
  19. 深度学习|迁移学习|强化学习
  20. VB中Byval关键字的使用。

热门文章

  1. python能做哪些客户端_Python 实现简单的客户端认证
  2. java实用教程——组件及事件处理——布局管理(五种)
  3. [Java基础]Lambda表达式的省略模式
  4. 《C++ Primer》14.3.2节练习(部分)
  5. C++实现邻接表存储的图及bfs遍历
  6. 交通标志识别项目教程
  7. Pandas - 查看DataFrame信息
  8. seaborn.heatmap概述
  9. Codeforces Round #597 (Div. 2) D. Shichikuji and Power Grid 最小生成树 + 虚拟点
  10. 对数位dp的一些拙见