搜狗前端问答最后一问

求大神说思路#搜狗#
全部评论
是删除字符那题吗?我觉得是排列组合的问题,也就是从M个字符中抽取N个字符,算出有x种,然后还要统计一下抽出来的字符组成的子串中有没有重复的(其实就是当前字符和下一个字符是否相同,相同的count++,直到下一个不是相同的为止),最后 x - count 应该就是结果了。。我是这么做的。。
点赞 回复 分享
发布于 2017-09-09 21:22
可以直接递归,每步删一个字符,递归终止条件就是字符长度为N。 当然直接这样只有80%。可以通过记忆化搜索优化。 最后数组去重就行
点赞 回复 分享
发布于 2017-09-09 21:41
我的代码: String.prototype.delete = function (N) { var thatStr = this var max = thatStr.length if (N > max) return 0 else if (N <= 0 || N == max) return 1 else { var hash = {} for (var i = 0; i + N <= max; i++) { var sub = thatStr.slice(0, i) sub += thatStr.slice(i + N) if (!(sub in hash)) hash[sub] = 1 } return Object.keys(hash).length } } var str = 'sogou' console.log(str.delete(0)) // 1 console.log(str.delete(1)) // 5 console.log(str.delete(2)) // 3
点赞 回复 分享
发布于 2017-09-09 23:17

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务