一个面试题求解决思路

2013-04-28 13:44:23 +08:00
 13m
给出字串:
wkjkjd fsk fsdjk
bbb sss fasdf

两行随机的英文字母,每行中间有空格

现在需要随机插入一个字母a,要求a必须插入两个字母中间,
例如:babb或者bbab
不能出现:abbb或者bbba

也就是判断插入a的前后是否为换行,空格或者行末

怎样最简单的实现该需求?
用js或者伪码写均可

谢谢!
3761 次点击
所在节点    问与答
28 条回复
oldcai
2013-04-28 21:44:18 +08:00
@13m 这不是随机的,这样的话,有空格在近处的字符位置被插入字符的概率会变大。
oldcai
2013-04-28 21:44:42 +08:00
@oldcai 纠正,这是随机的,但不是均衡概率的。
tioover
2013-04-28 21:47:47 +08:00
随机index 判断,不行的话再随机一个index。简单粗暴,不过最坏运行时间是无穷233
ipconfiger
2013-04-29 02:27:01 +08:00
import random

s = "wkjkjd fsk fsdjk bbb sss fasdf"

def insert(s):
if not s:
return "a"
idx = random.randint(0,len(s)-1)
return "".join([s[0:idx],"a",s[idx:len(s)]])

result = " ".join(["".join([word[0],insert(word[1:-1]),word[-1]]) for word in s.split()])
bitsmix
2013-04-29 02:27:02 +08:00
@oldcai 楼主说了,求「思路」
ipconfiger
2013-04-29 02:31:21 +08:00
DeeCheung
2013-04-29 04:09:17 +08:00
'wkjkjd fsk fsdjk\nbbb sss fasdf'.replace(/(bbb|sss)(\s)?/g, function(match, p1, p2){
var min = 1,
max = p1.length - 1,
pos = Math.floor(Math.random() * (max - min + 1)) + min; //ranint
return p1.substr(0, pos) + 'a' + p1.substr(pos, p1.length - 1) + p2;
});
DeeCheung
2013-04-29 04:12:42 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/67247

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX