如何获取两个相邻字母被切换/交换的所有字符串变体

问题描述 投票:0回答:1

获得交换两个相邻字母的字符串的所有可能变体的最优雅的方法是什么?例如,如果我们有字符串

'stack'
,则所需的结果应该是:

['tsack', 'satck', 'stcak', 'stakc']

我的解决方案:

w = 'stack'
[w[:i-1] + w[i] + w[i-1] + w[i+1:] for i in range(1, len(w))]
python string list nlp autocorrect
1个回答
0
投票

def switch_letter(word, verbose=False): ''' 输入: 单词:输入字符串 输出: 开关:所有可能的字符串的列表,其中一个相邻字符已切换 '''

switch_l = []
split_l = []

### START CODE HERE ###

split_l = [ (word[:i], word[i:]) for i in range(len(word)+1) ]

switch_l = [ L +R[1]+R[0]+R[2:] for L,R in split_l if len(R)>1 ]


### END CODE HERE ###

if verbose: print(f"Input word = {word} \nsplit_l = {split_l} \nswitch_l = {switch_l}") 

return switch_l

switch_word_l = switch_letter(word="stack",
                         verbose=True)

输出:输入word = stack split_l = [('', 'stack'), ('s', 'tack'), ('st', 'ack'), ('sta', 'ck'), ('stac', 'k'), ('stack', '')] switch_l = ['tsack', 'satck', 'stcak', 'stakc']

© www.soinside.com 2019 - 2024. All rights reserved.