用js实现递归算法获取字符串的所有子串
时间: 2024-01-29 18:04:39 浏览: 29
以下是用js实现递归算法获取字符串的所有子串的代码:
```js
function getAllSubstrings(str) {
let result = [];
if (str.length === 1) {
result.push(str);
return result;
}
let subResult = getAllSubstrings(str.substring(1));
for (let i = 0; i < subResult.length; i++) {
result.push(str[0] + subResult[i]);
}
result = result.concat(subResult);
result.push(str[0]);
return result;
}
```
调用该函数:
```js
console.log(getAllSubstrings('abc'));
// Output: ["a","b","ab","c","ac","bc","abc"]
```
相关问题
用js实现递归算法获取字符串的所有连续子串
```javascript
function getAllSubstrings(str) {
var result = [];
for (var i = 0; i < str.length; i++) {
for (var j = i + 1; j < str.length + 1; j++) {
result.push(str.slice(i, j));
}
}
return result;
}
```
这里是非递归的实现,如果需要递归实现,可以考虑以下步骤:
1. 定义一个函数,输入为字符串和起始下标(初始为0),输出为所有以该起始下标开始的子串
2. 在函数内部分别递归调用起始下标加1和不加1的情况,将两个结果拼接在一起并返回
3. 当起始下标等于字符串长度时,返回空数组
下面是代码示例:
```javascript
function getAllSubstrings(str, startIndex = 0) {
if (startIndex === str.length) {
return [];
}
const substrings = getAllSubstrings(str, startIndex + 1);
substrings.push(str[startIndex]);
for (let i = 0; i < substrings.length - 1; i++) {
substrings[i] = str[startIndex] + substrings[i];
}
return substrings;
}
```
递归算法获取字符串的所有子串
以下是递归算法获取字符串的所有子串的Python实现:
```
def get_substrings(s):
if len(s) == 0:
return ['']
substrings = get_substrings(s[1:])
return substrings + [s[0] + substring for substring in substrings]
```
这个函数首先检查字符串是否为空。如果是,它返回一个只包含一个空字符串的列表。否则,它递归地获取字符串的所有子串,并将它们与第一个字符组合起来,形成新的子串。最终,该函数返回包含所有子串的列表。
例如,如果我们调用`get_substrings('abc')`,它将返回`['', 'a', 'b', 'ab', 'c', 'ac', 'bc', 'abc']`。其中,空字符串是字符串的子串,`a`、`b`、`c`是字符串的单个字符子串,`ab`、`ac`、`bc`是字符串的两个字符子串,`abc`是字符串的三个字符子串。