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

这是困难的一个。
我现在已经有一段时间没用了,所以现在我希望你们中的一些人能够知道答案。我这里有一个很长的数字:

122111312121142113121

没有高于4或低于1的数字。
现在我需要找出一个随机序列(随机数,但除了1-4以外的任何内容,随机长度)是否存在于该较长的数字内。
作为一个例子,我有序列13121211,我需要找出它是否在上面的数组中(在这种情况下它是,但总有可能它不是!)。不幸的是,我仅限于使用纯HTML和JavaScript,没有jQuery或任何像AngularJS这样的框架。这个数字大约有600个字符,因此无需将所有数据输入数组即可获得解决方案!
我觉得应该有一个简单的方法来解决这个问题,但我无法弄清楚如何解决这个问题。

提前致谢 !:)


慕容708150
浏览 335回答 4
4回答

动漫人物

你是如何存储长号码的?如果它是一个数字,那只是字符串转换的问题:// Really there should be some type checkfunction 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"

慕码人2483693

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

BIG阳

如果我正确理解了这个问题,你只需要在另一个内部寻找一个字符串。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返回true或false不是位置的方法。当然不是IE。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript