Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找与字母对应的数字字符串的不同组合_Python_String_Algorithm_String Matching - Fatal编程技术网

Python 查找与字母对应的数字字符串的不同组合

Python 查找与字母对应的数字字符串的不同组合,python,string,algorithm,string-matching,Python,String,Algorithm,String Matching,假设我有一个输入: ['145689'] 我有一本字典{'1':'a','2':'b','3':'c'…,'26':'z','27':''}。我试图从左到右找到这个输入字符串的不同有效组合,从而得到所有可能的字符串 输入示例: ['11'] 示例输出: ['aa', 'j'] 'ab'来自组合'1','10'对应于'j' 用蛮力的方法是什么 这看起来像是一个家庭作业,所以这里有一个合理的提示 取字符串145689,检查长度最大为2(最大为26)的子字符串1,14。如果字典中有任何子字符串

假设我有一个输入:

['145689']
我有一本字典{'1':'a','2':'b','3':'c'…,'26':'z','27':''}。我试图从左到右找到这个输入字符串的不同有效组合,从而得到所有可能的字符串

输入示例:

['11'] 
示例输出:

['aa', 'j']
'ab'
来自组合
'1'
'10'
对应于
'j'


用蛮力的方法是什么

这看起来像是一个家庭作业,所以这里有一个合理的提示

取字符串
145689
,检查长度最大为2(最大为26)的子字符串
1
14
。如果字典中有任何子字符串,则对子字符串的其余部分运行递归调用。在我的示例中,它将是
call('45689',dict['1'])
call('5689',dict['14'])


基本上所有你需要写的都是一个简单的递归程序。

你应该考虑一个带有实际数字而不是字符串的字典。如果这些数字正好是字典中的字母位置,那么代码就相当简单了。你只需要找到最大的匹配项,然后返回到较小的匹配项。你能举一个超过2个字符的例子吗?如果有3个字符[a]、[ab]、[abc]和[bc]都算不算[bc]?我删除了我的答案,因为我意识到我不明白你是exmaple输出;b如何映射到0,b不是映射到2吗?@en_Knight抱歉,我的描述中有一个bug。你说得对。映射中没有0。@NewFanizer对我来说仍然没有意义-“10对应于‘j’”,你的意思是“11对应于k”,否则我们从哪里得到“10”的“0”谢谢。我正在考虑使用递归(这是一个构建过程)来解决这个问题。但是,我不太确定基本情况是长度为1的字符串,还是长度为1和2的字符串?@newfander我想您需要0长度和1长度的基本情况,然后对1-长度和2-长度的子字符串进行递归运算。@newfander您的数字是从
1
27
,这意味着它们可以取长度为1或2的子字符串。您的基本案例将是一个空字符串。因此,如果你得到了一个空字符串,你就能够成功地转换你的字符串。奖励点:在计算
'145689'
的过程中,你将在
'45689'
'5689'
上递归;但是对
'45689'
的递归调用也将在
'5689'
上递归。有一个标准的技巧,只计算“5689”的结果一次,而不是两次,并将其从指数算法转换为线性算法——你能自己重新发明这个技巧吗?@DanielWagner不确定这是我的问题还是OP的问题,以及它实际上是一个问题还是一个友好的提示。但是,是的,它被称为动态规划,您可以只存储以前已经计算过的某些元素的计算。如果您需要计算的内容已经计算过,那么忽略它。