gpt4 book ai didi

php - 打印可以从电话号码形成的所有字符串排列

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:38:02 30 4
gpt4 key购买 nike

我正在尝试打印可以从 php 中的电话号码组成的可能单词。我的一般策略是将每个数字映射到一个可能的字符数组。然后我遍历每个数字,递归调用函数来遍历每个可能的字符。

到目前为止,这是我的代码的样子,但还没有成功。我可以进行任何语法更正以使其正常工作吗?

$pad = array(
array('0'), array('1'), array('abc'), array('def'), array('ghi'),
array('jkl'), array('mno'), array('pqr'), array('stuv'), array('wxyz')
);

function convertNumberToAlpha($number, $next, $alpha){

global $pad;
for($i =0; $i<count($pad[$number[$next]][0]); $i++){
$alpha[$next] = $pad[$next][0][$i];

if($i<strlen($number) -1){
convertNumberToAlpha($number, $next++, $alpha);
}else{
print_r($alpha);
}
}
}


$alpha = array();
convertNumberToAlpha('22', 0, $alpha);

最佳答案

这将如何使用?这不是您所建议的简单递归算法的工作,甚至不是迭代方法。平均 10 位数字将产生 59,049 (3^10) 种可能性,如果您想确定实际单词,则必须根据字典对每种可能性进行评估。

很多时候,最好的方法是预编译字典,将 10 位数字映射到各种单词。然后,您的查找是一个恒定的 O(1) 算法,只需选择一个映射到可能单词数组的 10 位数字。

事实上,预编译字典是 T9 的工作方式,将字典映射到具有对数查找功能的树。

关于php - 打印可以从电话号码形成的所有字符串排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14540990/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com