题目链接:https://www.acwing.com/problem/content/description/557/

题目

Ayla有两个字符串A和B,每个字符串长度为L,每个字符串均由大写英文字母组成。

她想知道有多少个不同的A的子串可以在B中找到一个子串是它的“相同字母异序词”。

如果两个字符串的长度相同,组成字符串的字母和每个字母出现的次数也都相同,则这两个字符串为“相同字母异序词”。

例如,AABC和ABAC。

输入格式

第一行包含整数T,表示共有T组测试数据。

每组数据第一行包含整数L,表示字符串的长度。

接下来两行,每行一个长度为L的由大写字母构成的字符串,分别表示字符串A和字符串B。

输出格式

每组数据输出一个结果,每个结果占一行。

结果表示为“Case #x: y”,其中x为组别编号(从1开始),y为满足条件的子串数。

数据范围

1≤T≤100
1≤L≤50

输入样例:

6
3
ABB
BAB
3
BAB
ABB
6
CATYYY
XXXTAC
9
SUBXXXXXX
SUBBUSUSB
4
AAAA
AAAA
19
PLEASEHELPIMTRAPPED
INAKICKSTARTFACTORY

输出样例:

Case #1: 5
Case #2: 6
Case #3: 6
Case #4: 6
Case #5: 10
Case #6: 9

样例解释

在样例#1中,L = 3,A = ABB,B = BAB,A有6个子串,如下:

  • A,很明显在B中有相同字母异序词 。
  • B,很明显在B中有相同字母异序词 。
  • B,很明显在B中有相同字母异序词 。
  • AB,很明显在B中有相同字母异序词 。
  • BB,没有对应的相同字母异序词 。
  • ABB,与BAB为相同字母异序词 。

所以答案是5。

题解:

字符串长度比较小,我们可以暴力去枚举区间左右端点,然后统计这个区间每个字符出现的次数,然后对数组进行哈希。

代码:

#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
ull p=131;
int main(){int t;cin>>t;for(int cas=1;cas<=t;cas++){int n;cin>>n;string s,ss;cin>>s>>ss;int a[30];unordered_set<ull> sets;for(int i=0;i<n;i++){for(int j=i;j<n;j++){memset(a,0,sizeof a);for(int k=i;k<=j;k++) a[ss[k]-'A']++;ull haxi=0;for(int k=0;k<26;k++) haxi=haxi*p+a[k];sets.insert(haxi);}}int ans=0;for(int i=0;i<n;i++){for(int j=i;j<n;j++){memset(a,0,sizeof a);for(int k=i;k<=j;k++) a[s[k]-'A']++;ull haxi=0;for(int k=0;k<26;k++) haxi=haxi*p+a[k];if(sets.count(haxi)) ans++;}}printf("Case #%d: %d\n",cas,ans);}return 0;
}

相同字母异序词 向量哈希相关推荐

  1. 同字母异序词 python_Python初学者必学的20个重要技巧

    本文转载自公众号"读芯术"(ID:AI_Discovery). Python是世界上使用最广泛的编程语言之一,原因有很多:易理解.用途非常广泛.包含了大量的模块和库等等.其中,简洁 ...

  2. java取字符串中不相同的字母_java 判断两个字符串是否为相同字母异序词 --- 记录...

    前两天接触了这么一道有趣的题目: String org1="arm"; String org2="ram"; return true; String org3= ...

  3. 同字母异序词 python_49. 字母异位次分组(Python)

    题目 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 说明 所有输入均为小写字母. 不考虑答案输出的顺序. 示例 输入: ["eat", & ...

  4. 使用Python异序词检测示例_清点法_排序法_蛮力法_计数法

    要展示不同数量级的算法,一个好例子就是经典的异序词检测问题.如果一个字符串只是重排了另一个字符串的字符,那么这个字符串就是另一个的异序词,比如 heart 与 earth ,以及 python 与 t ...

  5. 漫谈词向量之基于Softmax与Sampling的方法

    from:http://www.dedns.cn/xueba/2315329.shtml 原文: On word embeddings 作者: Sebastian Ruder 译者: KK4SBB 审 ...

  6. Kaggle word2vec NLP 教程 第二部分:词向量

    原文:Bag of Words Meets Bags of Popcorn 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 第二部分:词向量 代码 第二部分的教程代码在这里. 分 ...

  7. word2vec预训练词向量+通俗理解word2vec+CountVectorizer+TfidfVectorizer+tf-idf公式及sklearn中TfidfVectorizer

    文章目录 文分类实(一) word2vec预训练词向量 2 数据集 3 数据预处理 4 预训练word2vec模型 canci 通俗理解word2vec 独热编码 word2vec (Continuo ...

  8. 词向量构造 - 词袋模型

    对于机器学习任务而言,不管是什么类型的数据(语言,声音,图像,视频),都必须转化为数值型数据,一般均为向量或者矩阵.自然语言处理,经过了一个长期的发展过程,近几年取得了重大的突破.自然语言处理的突破主 ...

  9. gensim的word2vec如何得出词向量(python)

    首先需要具备gensim包,然后需要一个语料库用来训练,这里用到的是skip-gram或CBOW方法,具体细节可以去查查相关资料,这两种方法大致上就是把意思相近的词映射到词空间中相近的位置. 语料库t ...

最新文章

  1. 不用任何软件消除mp3的乱码
  2. [TJOI2018]xor
  3. 【Python】实战多word的内容合并筛选及输出
  4. python协程 无能为力_python已协程方式处理任务
  5. 人工智能AI实战100讲(四)-基于深度学习的图像增强综述
  6. java中intvalue_Java Byte类intValue()方法的示例
  7. mysql创建视图不允许子查询
  8. Centos7 / RHEL 7 双网卡绑定
  9. 12. Integer to Roman
  10. Codevs 1215 迷宫
  11. 抖音快手vbs表白代码大全(操作方法)
  12. 产品做出来了,我们该怎么办?
  13. DAX函数十大分类及示例
  14. JAVA中extends与implements详解
  15. TCP-IP协议详解(5) 我尽力(IP协议详解)
  16. Python获取文件的行数和某一行的内容
  17. java_java开发工程师
  18. Mars的自语重出江湖,祝大家端午节安康
  19. Docker常用命令整理
  20. OA审批流程管理,简化审批手续!

热门文章

  1. 一个优秀的外贸网站应该是怎样的
  2. java枚举 数字_java 枚举
  3. cf游戏进不去计算机,我的电脑玩游戏cf登陆不上怎么办? 爱问知识人
  4. 第十八章----面向对象(宠物乱斗之子类篇)
  5. 诊所预约管理系统-电子病例功能
  6. js将日期对象转换为日期格式字符串
  7. Pyhton之小猪佩琦(非原创)
  8. linux安装mysql5.7.26
  9. R沟通|用xaringan包制作幻灯片
  10. 使用CSS实现div居中的多种方法