2017-08-25 41 views
0

假设我有一个字符串,如从另一字符串返回字符串基于关闭特定子串

S =“左左 - 右 - 右 - 左”

和一个空字符串n的数量和顺序=''

并且从该字符串的左边向右边读取显示的左边和右边的数目,并为每个左边添加'a',为出现的每个右边添加'b'。

换句话说像

def convert(s): 

函数将返回“aabba”

我沿着s.count的思路思考,但B的需求是一个公司之间,以及数不会告诉你子字符串发生的位置。

回答

2

最简单的方法是用b替换左边和右边。它应该工作

s = "left-left-right-right-left" 
s = s.replace("left","a") 
s=s.replace("right","b") 
s=s.replace("-","") 
+0

欢迎。如果这是您需要的,请接受解决方案。 –

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("-", "") 
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', '') 
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 

它的工作原理与函数替换任何leftright|说在字典中查找替换文本。

相关问题