便利蜂笔试题

输入一个字符串
假设abcd
输出a2d ab1d a1cd abcd
求思路

全部评论
s = 'abcdefg' l = len(s) t = s[0] + str(l-2) + s[l-1] a = [t] a.extend([s[:j] + str(i) + s[i+j:] for i in range(l-3, 0, -1) for j in range(1, l-2)]) a.append(s) print ' '.join(a) 无非也是暴力的解决,思路和上楼的一样, a5g a4fg ab4g abc4 abcd4 a3efg ab3fg abc3g abcd3 a2defg ab2efg abc2fg abcd2g a1cdefg ab1defg abc1efg abcd1fg abcdefg
点赞 回复 分享
发布于 2017-04-09 17:07
简单粗暴的用js实现下,先把一头一尾拿出来,剩余的从替换一个到替换它的长度个,用两个循环,外层循环控制替换个数,内层进行替换,最后再把替换好的加上首尾就可以了。 function result(str){ var strArr=str.split(''); var res=[]; var first=strArr.shift(); var last=strArr.pop(); for(var i=1;i<=strArr.length;i++){ //换i个 for(var j=0;j<=strArr.length-i;j++){ var temp=strArr.slice(0); temp.splice(j,i,i);//删除并替换 res.push(temp) } } for(var k=0;k<res.length;k++){ res[k].unshift(first); res[k].push(last); console.log(res[k].join('')); } }
点赞 回复 分享
发布于 2017-04-09 11:06
少几个字母,换成数字***
点赞 回复 分享
发布于 2017-04-07 21:51
应该是省略中间的 字母 类似全排列问题
点赞 回复 分享
发布于 2017-04-07 14:50
便利蜂啥时候笔试的?
点赞 回复 分享
发布于 2017-04-07 11:46
what's the meaning?
点赞 回复 分享
发布于 2017-04-07 10:58

相关推荐

流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务