我使用以下函数从JavaScript中的字符串中获取所有子字符串。我知道这是不正确的,但我觉得我的做法是正确的。任何建议都是很棒的。
var theString = 'somerandomword',
allSubstrings = [];
getAllSubstrings(theString);
function getAllSubstrings(str) {
var start = 1;
for ( var i = 0; i < str.length; i++ ) {
allSubstrings.push( str.substring(start,i) );
}
}
console.log(allSubstrings)
编辑:如果我的问题不清楚,很抱歉。我所说的子串是指字符串中的所有字母组合(不一定是实际的单词),所以如果字符串是'abc‘,你可以有a,ab,abc,b,ba,bac等……感谢您的回复。
发布于 2016-11-26 21:29:21
子字符串需要两个嵌套循环。
function getAllSubstrings(str) {
var i, j, result = [];
for (i = 0; i < str.length; i++) {
for (j = i + 1; j < str.length + 1; j++) {
result.push(str.slice(i, j));
}
}
return result;
}
var theString = 'somerandomword';
console.log(getAllSubstrings(theString));
.as-console-wrapper { max-height: 100% !important; top: 0; }
发布于 2018-07-09 03:58:28
接受答案的修改版本。为了给出排列的最小字符串长度
function getAllSubstrings(str, size) {
var i, j, result = [];
size = (size || 0);
for (i = 0; i < str.length; i++) {
for (j = str.length; j - i >= size; j--) {
result.push(str.slice(i, j));
}
}
return result;
}
var theString = 'somerandomword';
console.log(getAllSubstrings(theString, 6));
发布于 2020-02-07 23:10:23
下面是问题的递归解决方案
let result = [];
function subsetsOfString(str, curr = '', index = 0) {
if (index == str.length) {
result.push(curr);
return result;
}
subsetsOfString(str, curr, index + 1);
subsetsOfString(str, curr + str[index], index + 1);
}
subsetsOfString("somerandomword");
console.log(result);
https://stackoverflow.com/questions/40818769
复制相似问题