搜狗前端问答最后一问

求大神说思路#搜狗#
全部评论
是删除字符那题吗?我觉得是排列组合的问题,也就是从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

相关推荐

微风不断:兄弟,你把四旋翼都做出来了那个挺难的吧
点赞 评论 收藏
分享
头像
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
头像
昨天 15:46
已编辑
中南大学 后端
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务