为了账号安全,请及时绑定邮箱和手机立即绑定

查找更长序列的序列的算法

查找更长序列的序列的算法

慕容708150 2019-04-25 18:15:49
这是困难的一个。我现在已经有一段时间没用了,所以现在我希望你们中的一些人能够知道答案。我这里有一个很长的数字:122111312121142113121没有高于4或低于1的数字。现在我需要找出一个随机序列(随机数,但除了1-4以外的任何内容,随机长度)是否存在于该较长的数字内。作为一个例子,我有序列13121211,我需要找出它是否在上面的数组中(在这种情况下它是,但总有可能它不是!)。不幸的是,我仅限于使用纯HTML和JavaScript,没有jQuery或任何像AngularJS这样的框架。这个数字大约有600个字符,因此无需将所有数据输入数组即可获得解决方案!我觉得应该有一个简单的方法来解决这个问题,但我无法弄清楚如何解决这个问题。提前致谢 !:)
查看完整描述

4 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

你是如何存储长号码的?如果它是一个数字,那只是字符串转换的问题:


// Really there should be some type check

function numberContainsSequence(number, sequence) {

  return ("" + number).contains("" + sequence);

}


numberContainsSequence(122111312121142113121, 13121211); // -> true

如果你已经有了一个字符串,那就更容易了,但同样的功能也可以。


如果你有一个字符或整数数组,只需使用join:


[1, 2, 3, 4, 5, 6].join(''); // -> "123456"

['1', '2', '3', '4', '5', '6'].join(''); // -> "123456"


查看完整回答
反对 回复 2019-05-08
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

使用string.indexOf(sequence),其中字符串和序列由您定义。如果返回-1,则序列不包含在字符串中。作为一个。Chiesa提到,。indexOf()需要两个字符串,因此您可能需要使用.join()函数。


查看完整回答
反对 回复 2019-05-08
?
BIG阳

TA贡献1859条经验 获得超6个赞

如果我正确理解了这个问题,你只需要在另一个内部寻找一个字符串。JavaScript编号不允许600位数字,但这没关系,因为您不会将其视为数字 - 只是一系列字符。

尝试这样的事情:

var number='122111312121142113121';var search='13121211';var position=number.indexOf(search);
if(position>-1) alert('Found at '+position);else alert('Not Found');

indexOf方法正在做所有艰苦的工作。索引表示失败-1,因为索引是从零开始的,这意味着第一个成功的位置是0

并且你正确地避免了jQuery的Angular这个问题,就像试图用热核装置破解核桃一样。

现代 JavaScript有一个includes返回truefalse不是位置的方法。当然不是IE。


查看完整回答
反对 回复 2019-05-08
  • 4 回答
  • 0 关注
  • 334 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号