【发布时间】:2017-11-23 13:15:18
【问题描述】:
我正在尝试找到给定字符串的最佳字符串集。
给定字符串:“FEEJEEDAI”
子字符串值:
FE - 1
乙脑 - 2
JEE - 3
人工智能 - 4
DAI - 6
可能的组合:
1) [FE-JE-DAI] - 1+2+6 = 9
2) [FE-JEE-DAI] - 1+3+6 = 10
3) [FE-JE-AI] - 1+3+4 = 8
最佳组合 - 2) [FE-JEE-DAI] 得分 10
我认为应该是这样的:
1) 检查字符串是否包含特定的子字符串:
var string = "FEEJEEDAI",
substring = "JE";
string.indexOf(substring) !== -1;
2) 如果为真,则找到它的索引
var subStringIndex = string.indexOf(substring)
3) 创建新的 tempString 以构建组合并从 string '切断'substring
var tempString = string.slice(subStringIndex, substring.length)
4) 遍历string 并找到最优tempString
我不知道如何将其构建成循环并处理 JE vs JEE、AI vs DAI 的情况
【问题讨论】:
-
同一个子串能找到多次吗?两个子串可以重叠吗?
-
是的,可以多次找到子字符串,是的,它们相互重叠——我猜这是最难的部分。
-
那么如果你在字符串“EEEEEE”中搜索“EE” - 2 和“EEE” - 3 那么结果是什么?
-
所有可能的组合,所以:EE-EE-EE, EEE-EEE, EE-EEE, EEE-EE 现在算法应该根据添加到子字符串的值选择最佳选项
-
但是重叠呢?难道也不能是 EE-EE-EE-EE-EE 吗?
标签: javascript string algorithm substring mathematical-optimization