gpt4 book ai didi

javascript - 如何在没有给定模式的情况下将字符串拆分为相同的部分?

转载 作者:行者123 更新时间:2023-11-30 07:31:19 25 4
gpt4 key购买 nike

我有一个函数,每次返回一个不同的字符串,但具有特定的随机模式,这个模式可以像“a、b、c、a、b、c”之类的一样简单复杂得多。

所以我需要编写一个函数,在字符串中搜索模式并返回它。

只有一个条件需要考虑,假设我们有这个字符串,例如:“a, b, a, b, c, a, b, a, b, c”

在该字符串中,您不能说“a, b”是一个模式,要将特定字符串视为一个模式,那么它应该比其余字符串长,在这种情况下,“a,b”是 ( 2 digits * 2) = 4 剩下的就是 "c, a, b, a, b, c"6 digits,所以认为真正的模式是 "a, b, a, b, c"。

我正打算编写一个函数来执行此操作,但我知道这将是一个复杂的函数,所以我想在 PHP 或 Javascript 中是否有一个内置功能可以做一些接近于此的事情,或者让我的工作更轻松,所以大家有什么想法吗?

最佳答案

听起来最简单的解决方案是从字符串的开头开始并找到从索引 0 开始的最小子字符串,这样重复该子字符串一定次数会导致输入字符串:

const findPattern = str => {
const { length } = str;
for (let i = 1; i < str.length - 1; i++) {
const testPattern = str.slice(0, i);
const repeats = Math.ceil(length / i);
if (str === testPattern.repeat(repeats).slice(0, length)) return testPattern;
}
return 'No pattern found';
}
console.log(findPattern('ababcababc'));
console.log(findPattern('aabbaabb'));
console.log(findPattern('aabaab'));
console.log(findPattern('aabaabaab'));
console.log(findPattern('abcdabc'));
console.log(findPattern('abcd'));

关于javascript - 如何在没有给定模式的情况下将字符串拆分为相同的部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51914423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com