使用递归计算字符串中的每个字符



我已经尝试让一个函数使用递归计算字符串中的每个字符,现在已经有两天了。我试着写一些伪代码,但我不能真正实现它

伪码:

编写一个函数,将文本作为参数

为每个元素设置一个计数器

使用关键字为元素中的每个字符设置一个结果值

基本情况:如果我们只有1个字符串,那么返回字符和字符串

else返回函数-1,直到最后一个元素被击中为止。

var tekst = "We have to count strings";
function countStrings(tekst) {
var count = 0
var result = {}
if (count > tekst.lentgh) {
count++
return result
} else {
return countStrings(tekst-1) 
}
}
console.log(countStrings(tekst))

考虑使用以下逻辑:

var tekst = "We have to count strings";
function countStrings(tekst) {
if (tekst.length == 0) {
return 0;
}
return 1 + countStrings(tekst.substring(1));
}
console.log(countStrings(tekst))

这里的方法是,在递归的每一步,返回1加上从下一个字符开始的子字符串的长度。也就是说,我们向下递归输入字符串,一次一个字符,构建长度。这里的基本情况发生在countStrings()的输入恰好是空字符串时。在这种情况下,我们只返回0,并停止递归调用。

我决定尝试这个问题,这就是我想到的。这绝对是一个具有挑战性的问题,所以如果你没有得到它,不要感到难过:

var countStrings = function(tekst) {
if (tekst.length === 0) return {};

var obj = countStrings(tekst.slice(1));

if (obj[tekst[0]]) {
obj[tekst[0]] += 1;
} else {
obj[tekst[0]] = 1;
}

return obj;
};

最新更新