字符串的最大公因子

该文描述了一种计算两个字符串最大公因字符串的方法。首先检查字符串是否相等,若相等则返回任一字符串;否则,通过调整字符串长度,使用辗转相除法找到两字符串长度的最大公约数。接着,检查各字符串能否被自身前最大公约数长度的子串整除,以及这些子串是否相同。只有所有条件满足时,才存在最大公因字符串,否则返回空字符串。
摘要由CSDN通过智能技术生成

在这里插入图片描述
1.首先,当字符串str1和str2相同时,最大公因数必为str1或str2,返回其中任一即可
if(str1==str2) return str1
2.当str1和str2不相同时,最大公因数必为空字符串,返回空字符串
if(str1.length==str2.length) return “”
3.在讨论完这两种特殊情况后,str1和str2必定不相同且它们的长度也不同,为了便于讨论,这里通过使得str2的长度大于str1的长度时交换str1和str2从而让str1的长度一定大于str2的长度
if(str2.length>str1.length) { let temp:string=str1;str1=str2;str2=temp }
4.接下来使用辗转相除法算出两个字符串长度最大公约数,结果为l2的最终值
let l1:number=str1.length,l2:number=str2.length,r:number
r = l1 % l2
while(r!=0){ l1=l2;l2=r;r=l1%l2; }
5.最后判断两个字符串是否能整除自身前l2个字符组成的字符串及它们自身前l2个字符组成的字符串是否相同来判断它们任一的前l2个字符组成的字符串是否是它们的最大公约字符串,如果是,则返回,如果不是,则这两个字符串不存在最大公园字符串,返回空字符串
for(var i:number=0;i+2l2<=str1.length;i+=l2) if(str1.slice(i,i+l2)!==str1.slice(i+l2,i+2l2)) return “”
for(var i:number=0;i+2l2<=str2.length;i+=l2) if(str2.slice(i,i+l2)!==str2.slice(i+l2,i+2l2)) return “”
if(str1.slice(0,l2)!==str2.slice(0,l2)) return “”
return str2.substring(0,l2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值