javascript - 如何创建一个检查每个子字符串的递归函数?
问题描述
如何使用递归函数找到任何给定字符串中的所有子字符串?我知道如何使用 2 个 for 循环来做到这一点,但我不知道如何使用递归来做到这一点。需要检查每个子字符串是否为回文。这是我的非迭代解决方案。
console.log(palindromeIterative("madam"));
function palindromeIterative(word) {
let noOfP = 0;
for (let i = 0; i < word.length; i++) {
for (let j = i + 1; j <= word.length; j++) {
noOfP = palindromeIterativeHelper(word.substring(i, j), noOfP);
}
}
return noOfP;
}
function palindromeIterativeHelper(word, noOfP) {
if (word === word.split("").reverse().join("") && word.length > 1) {
console.log(word);
noOfP++;
}
return noOfP;
}
解决方案
这是递归版本。这可能不是最佳优化的解决方案,但这将解决上述问题。
let str = "forgeeksskeegfor"
let noOfP = 0;
let getSubstrings = (str) => {
let countPalindrome = (str) => {
if (str.length < 2)
return
else {
if (str == str.split("").reverse().join("")) {
console.log(str);
noOfP++;
}
countPalindrome(str.substring(0, str.length - 1))
}
}
countPalindrome(str)
if (str.length < 2) {
return noOfP;
}
return getSubstrings(str.substring(1))
}
console.log(`Total Palindromes : ${getSubstrings(str)}`)
推荐阅读
- php - 为什么javascript代码在laravel刀片文件中不起作用
- r - h(simpleError(msg, call)) 中的错误:在选择“坐标”函数的方法时评估“obj”参数时出错
- c# - 从 MVC 项目中的另一个文件夹 asp.net webform 页面调用主控制器
- angular - 如何在 Angular NX 工作区中使用标签运行 nx e2e 测试?
- c - C close() : 无效参数
- docker - 如何使用配置文件更改 Nexus 中 Docker 私有存储库的绑定端口?
- python - 读取 CSV 文件并提取信息
- google-apps-script - 如何:将 Google Apps 脚本 Sheets Add-on 私下发布到我的域
- html - HTML 模态关闭按钮不起作用 + 内部内容未对齐
- libreoffice-calc - Libreoffice Calc:如何将特定数据从一个列表传输到另一个列表