假设我有一个字符串,例如
s =“左 - 右 - 右 - 左”
和空字符串n =''
并从左到右查看该字符串,阅读出现的左侧和权限数量,并为每个左侧添加“a”,为每个出现的右侧添加“b”。
换句话说就像
这样的函数AddAuthentication
将返回'aabba'
我正在思考s.count,但是b需要在a之间,而count并不会告诉你子串发生的位置。
答案 0 :(得分:2)
最简单的方法是用a替换左边,用b替换右边。它应该工作
s = "left-left-right-right-left"
s = s.replace("left","a")
s=s.replace("right","b")
s=s.replace("-","")
答案 1 :(得分:0)
最简单的解决方案。
def convert(s):
s = s.replace("left", "a")
s = s.replace("right", "b")
s = s.replace("-", "")
return s
OR
def convert(s):
return s.replace("left", "a").replace("right", "b").replace("-", "")
答案 2 :(得分:0)
我尝试过递归解决方案。
def rec_search(s, n):
if len(s) is 0:
return n
if s[-len('left'):] == 'left':
return rec_search(s[:-len('-left')], n) + 'a'
return rec_search(s[:-len('-right')], n) + 'b'
print rec_search('left-left-right-right-left', '')
答案 3 :(得分:0)
这也可以使用正则表达式sub()
完成,如下所示:
import re
s = "left-left-right-right-left"
print re.sub('left|right|-', lambda x: {'left':'a', 'right':'b', '-':''}[x.group(0)], s)
给你:
aabba
它的工作原理是将任何left
right
或|
替换为在字典中查找替换文字的函数。