奇奇怪怪的字符串循环同构问题

基于特定格式字符串的差异标记算法 基于特定格式字符串的差异标记算法 实验室项目中遇到这样一个需求,将OCR识别后的两段文字进行互相校验并标记出差异。两段文字分别来自不同源的OCR识别,自然会存在差异,而且本身也有误差。实际上这个标记是十分麻烦的,不同于普通的字符串算法,它是一种更加模糊,而且多变但又有着特殊形式的字符串。之前考虑过匹配算法如KMP、自动机之类都不适合;考虑相似度检测的算法如编辑距离和余弦相似度也不适合,实际上不需... 阅读详情

昨天看到篇奇怪的论文……讲最小表示法的比较的。

有字符串S1、S2,|S1| = |S2|,请在O(N)时间内判断是否存在 i 使得

S1[i...|S1|]+S1[1...i]=S2S1[i...|S1|]+S1[1...i]=S2

显然朴素算法 O(N2)O(N2)

高级的话可以用KMP什么的模版串匹配算法,将S1复制一遍,在里面匹配S2就可以了。

然后论文里有一种非常神奇的做法。

显然两个字符串循环同构的充分必要条件是这两个字符串的最小表示法相等。

令S1′=S1+S1S1′=S1+S1,S2′=S2+S2S2′=S2+S2

显然存在i使得S1′[i...i+|S1|−1]S1′[i...i+|S1|−1]为S1的最小表示法,S2同理(设为j),i,j<=|S1|i,j<=|S1|。

首先令i=1,j=1,当遇到第一个k使 S1′[i+k]≠S2′[i+k]S1′[i+k]≠S2′[i+k]时

若S1′[i+k]>S2′[j+k]S1′[i+k]>S2′[j+k]

则显然,若两串循环同构,存在l>i+kl>i+k使得S1′[l...l+k]=S2′[j...j+k]S1′[l...l+k]=S2′[j...j+k],因而对于任意从i...i+ki...i+k开始的串都不可能是S1的最小表示,直接i=i+k+1i=i+k+1

S1′[i+k]<S2′[j+k]S1′[i+k]<S2′[j+k]同理

PS.如果匹配时发现k>=|S1|k>=|S1|说明发现同构,若i,j>|S1|i,j>|S1|说明不同构。

向NCBI上传16S rDNA数据的操作详解 专门介绍向NCBI上传16S rDNA数据的方法不太多。因为自己有上传数据的需要,所以决定边摸索边写下操作流程。如果这篇博文交代了上传步骤以及一些描述文件属性的书写,帮到你的话,还请点赞收藏。 阅读详情

相关推荐

华为昇腾服务器npu中安装paddle,pytorch等环境,训练代码迁移适配等问题记录

参考文档:https://github.com/PaddlePaddle/PaddleCustomDevice/blob/develop/backends/npu/README_cn.md

qq_29220369的博客 4112

最小表示法(循环同构串)

定义 长度为n的序列,循环同构串中字典序最小的就是最小表示 序列 4 3 2 1 ,它的循环同构串为 3 2 1 4 ,2 1 4 3 ,1 4 3 2 ,其中字典序最小的就是1 4 3 2 解释 我们最先想到的就是暴力枚举+判断 ,可以对所给序列进行枚举所有的字典序,然后找出最小的字典序即可,但是我们枚举+判断的时间复杂度是很高的,那么我们继续优化 观察发现:对于给定的序列,其中如果所有元素都不重复的化,就例如上述例子,我们找到字典序最小的一定是以最小元素开头的,4 3 2 1 4

qq_44791484的博客 1074

5.4 磁悬浮轴承控制系统仿真:在MATLAB/Simulink中搭建包含功放、传感器模型的闭环系统模型,进行稳定性与动态性能仿真

磁悬浮轴承控制系统仿真方法 摘要:磁悬浮轴承控制系统仿真需建立包含转子动力学、传感器、控制器、功率放大器和电磁执行器的高保真非线性模型。通过MATLAB/Simulink搭建闭环系统,重点建模传感器带宽限制与噪声、功放饱和特性以及电磁力非线性。仿真分析包括时域阶跃响应、扰动抑制测试,频域稳定性分析(伯德图、奈奎斯特图),以及参数摄动下的鲁棒性验证。关键要验证控制算法在非线性因素影响下的稳定性和动态性能,为实际系统实现提供可靠依据。仿真中需特别注意物理量单位一致性和数字控制离散化效应。

技术工作者 1108

【字符串循环同构的最小表示法】

循环字符串的最小表示法的问题可以这样描述: 对于一个字符串S,求S的循环的同构字符串S’中字典序最小的一个。 由于语言能力有限,还是用实际例子来解释比较容易: 设S=bcad,且S’是S的循环同构的串。S’可以是bcad或者cadb,adbc,dbca。而且最小表示的S’是adbc。 对于字符串循环同构的最小表示法,其问题实质是求S串的一个位置,从这个位置开始循环输出S,得到的S’字典序最

leolin_的专栏 1380

ISO15118-20证书结构关系解读(7.3.2.1)

本文主要讲述ISO15118-20:2022标准所有证书结构的关联关系,目的是为后续基于ISO15118-20车桩通讯及PNC充电等提供基础支撑。 本文所有的证书关系图全部来源于ISO15118-20:2022标准规范,在后续的讲解过程会将图的摘取出处给提供出来,便于后期文章和标准对应起来解读。

weixin_40900932的博客 3184

手把手教你用ZEMAX复现贝塞尔光束:从Thorlabs锥透镜到Edmund透镜的完整光路搭建

本文详细介绍了如何在ZEMAX光学设计软件中复现贝塞尔光束,从Thorlabs锥透镜到Edmund透镜的完整光路搭建过程。通过逐步指导,帮助研究人员和工程师掌握光学设计技巧,实现无衍射特性的贝塞尔光束生成,适用于激光加工和生物成像等领域。

weixin_33737774的博客 181

同构数(循环)

具有下面性质的数a称为"同构数":设b是a的平方,a与b的低若干位相同。输入两个整数a,b (0<=a, b<=99),找出a、b之间全部的同构数。控制台上按照由小到大的顺序输出所有同构数.每一个整数占一行.在0-30之间的同构数有0, 1, 5, 6, 25.控制台输入0-99之间的两个整数a和b.

chenxing118149的博客 352

别再只用GPS了!用Android手机传感器实现室内步行轨迹记录(避坑指南)

本文详细介绍了如何利用Android手机传感器(如加速度计、陀螺仪和磁力计)实现室内步行轨迹记录,克服GPS在室内的局限性。通过传感器数据采集、步态检测、航向估计和轨迹绘制等步骤,结合避坑指南和优化技巧,帮助开发者高效构建室内定位应用。

weixin_26821003的博客 274

判断两个字符串是否循环同构

设字符串A,和B 判断A 与 B是否循环同构: 令字符串C = A + A(A重复) 通过KMP在C中查找B,若B存在于C中则A与B循环同构

correct 1402

西门子博图TIA Portal V18实战:用LAD梯形图快速上手一个电机启停控制程序

本文详细介绍了如何在西门子博图TIA Portal V18中使用LAD梯形图快速实现电机启停控制程序。从项目创建、硬件组态到LAD编程和仿真调试,逐步引导读者掌握PLC编程的核心逻辑,特别适合工业自动化领域的初学者快速上手。

weixin_30617737的博客 690

【WRF-Urban数据集】 WRF 模型城市冠层参数 GloUCP 的使用

【数据集】 WRF 模型城市冠层参数 GloUCP 的使用

WW、forever的博客 479

要检查一个字符串是否可以由它的一个子串重复多次构成

例如,对于字符串 “abcabcabc”,拼接后的字符串是 “abcabcabcabcabcabc”,去掉第一个和最后一个字符后的子串是 “bcabcabcabcabcab”,这个子串包含了原始字符串 “abcabcabc”,所以原始字符串 “abcabcabc” 可以由它的一个子串 “abc” 重复多次构成。这个函数首先将字符串 s 与自身拼接,然后从第二个字符开始到倒数第二个字符结束的子串中查找原始字符串 s。如果找到了,那么说明原始字符串 s 可以由它的一个子串重复多次构成。

前端精髓 814

TEA-Tiny Encryption算法在FPGA的实现

在FPGA原型中,我们定义了一个TEA_FPGA模块,该模块包含一个输入数据端口(plain)、一个输入密钥端口(key)和一个输出数据端口(cipher)。在模块中,我们通过32轮的循环处理来实现TEA算法的加密过程,并将最终结果存储在cipher变量中。由于FPGA硬件的高速性能,这种基于HDL的TEA算法实现可以在短时间内完成大量的数据加密处理,从而提高加密效率和性能。总之,在FPGA中实现TEA算法可以大大提高加密效率和性能,通过使用硬件描述语言HDL来实现可以更高效、更快速地完成数据加密操作。

BitSlinger的博客 272

各种奇奇怪怪的经验

1.前缀和:遇到一个字符串吧,并且字符不相同的有很多,比如一串由26个英文大写字母组成的长字符串a,这种情况我们如何快速简洁地记录前缀和呢? 答;定义一个存储前缀和的数组 int s[],找到字符串中最小的一个字符c为基准,那么可以: for(int j=0;j<a.size();j++) s[a[j]-c]++; 以上这种方法就的复杂度就是a.size()。 错误思路:每次在for...

qq_44090228的博客 185

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

shell入门:脚本里那些奇奇怪怪的写法

1. 字符截取 写法:${x:y:z} 解释:把$x变量中的字符从第y个字符(包含第y个)向后截取z个字符 2. 带返回值的函数调用 受限在函数中用echo输出变量,再调用的时候用``涵盖调用,传递给返回值 function a(){     echo $1 } ret=`a 123` echo ret: $ret 最后输出的是 ret: 123

Ls4034的专栏 674

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

字符串——3.重复的子字符串

首先,我们来分析一下这个自定义函数getNext,在分析之前,我先简单讲一下这个解法的原理,如果字符串s是由它的子串重复构成的,那么一定存在两种特征,一是最小子串的长度是能被原始子串s长度整除的(这个很容易理解,最小子串长度如果是3的话,那你重复构成的s长度肯定是3的倍数吧);那么题目就转化为了在s+s中寻找有没有s,利用python中的find函数就可以完成了,但是在s+s中寻找s总感觉奇奇怪怪的,既然是s+s那其中不本来就有s么,怎么判断是原始的s还是新组成的字符串中的s呢?首先判断nxt[-1]!

plutomty的博客 2898

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C基础遇见的一些奇奇怪怪的问题

C语言基础新手的奇奇怪怪的问题

Liuyeyeya的博客 306

定制Newtonsoft的Json字符串转换器,解决reference loop等问题

对于需要特殊处理的字段,需要自己写转化字符串的方法。比如说我创建了个类叫myclass,它的大部分字段都是常规的double string int这些,但是它有一个字段叫neighbour用来记录哪些是它的邻居,很明显neighbour也是myclass类型,并且肯定会发生这种情况:A的neighbour是B, B的neighbour又指回A。

nichongben的博客 676

ACM之奇奇怪怪的知识

ACM里一些奇奇怪怪的知识,说不定能帮到你。

code___farmer的博客 754

《JavaScript 秘密花园》—一些奇奇怪怪的知识

读《JavaScript 秘密花园》,根据自己知识缺漏摘抄部分内容,以及实际代码执行结果

qq_40029828的博客 1327

那些奇奇怪怪的语句

标签语句标签由语句前面的标识符与冒号组成:identifier: statement可以形象的理解为标签名就是语句块的一个外号,比如我们一说卷福,就知道是这个家伙要注意的是,标识符一定要合法,不能是保留字说了这些注意事项,那么,标签能干些什么呢?事实证明,当给语句块定义标签的时候,它才会更有用。一般情况下,我们会将标签与break(跳出循环)和continue(跳过本次循环)相结合,从而达到好的效果

月亮门下 575

一些奇奇怪怪的c++技巧(一)

快速的输入输出: cin比getchar确实是慢很多,所以一些还算程序运行时间的排名的oj比赛,可以用getchar输入节约时间来刷排名。 快速输入: inline int read() { int k=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){k=k*10+ch-'0';ch=get

windyuan~ 333

字符与字符串的读入,格式化输入输出

主要分成两个部分:字符串输入办法,scanf和printf的格式说明字符串

qq_45809243的博客 1898

接收指定长度_那些奇奇怪怪的需求一:PinyinHelper的使用、生成指定长度随机码...

背景:需求是要给每条数据生成一个字符拼音首字母+6位字母数字的随机码。嗯简单易懂。1、生成6位长度的随机码。这玩意还挺好理解的,首先明白字符串String是由一个一个char字符组成的数组(字面理解)。String里面有个方法charAt(int i),i参数是指String字符串的下标索引(也就是char[]数组的下标索引),比如一个String str = "哈哈哈123abc";//这里不分...

weixin_28340315的博客 193

【牛客网】公共字符串计算

题目描述 计算两个字符串的最大公共字串的长度,字符不区分大小写 输入描述: 输入两个字符串 输出描述: 输出一个整数 示例: 输入 asdfas werasdfaswer 输出 6 解题思路 因为字符不区分大小写,所以可以先将所有大写字符 +32 转换成小写字符。(其实牛客网中的这道题并没有考察到这个点) 思路一:将较短的字符s1的长度作为外层循环,然后用s1中的每个字母在s2中查找,如果存在...

ly_6699的博客 551

加密生成指定长度_那些奇奇怪怪的需求(一):PinyinHelper的使用、生成指定长度的随机码...

背景:需求是要给每条数据生成一个字符拼音首字母+6位字母数字的随机码。嗯简单易懂。1、生成6位长度的随机码。这玩意还挺好理解的,首先明白字符串String是由一个一个char字符组成的数组(字面理解)。String里面有个方法charAt(int i),i参数是指String字符串的下标索引(也就是char[]数组的下标索引),比如一个String str = "哈哈哈123abc";//这里不分...

weixin_39972019的博客 184
下一篇: CodeForces AIM Tech Round 3 (Div. 2) D
ceerrep
博客等级 码龄11年 0粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值