Myk*_*eul 5 php string wildcard
我花了几天时间研究一个函数,以正确的顺序在一个字符串数组中获取常用字符,以创建一个通配符.
这是一个解释我的问题的例子.我做了大约3个函数,但是当每个字母的绝对位置不同时,我总是有一个bug.
我们假设"+"是"通配符":
Array(
0 => '48ca135e0$5',
1 => 'b8ca136a0$5',
2 => 'c48ca13730$5',
3 => '48ca137a0$5');
Run Code Online (Sandbox Code Playgroud)
应该返回:
$wildcard='+8ca13+0$5';
Run Code Online (Sandbox Code Playgroud)
在这个例子中,棘手的是,$array[2]比其他人更多1个字符.
其他例子:
Array(
0 => "case1b25.occHH&FmM",
1 => "case11b25.occHH&FmM",
2 => "case12b25.occHH&FmM",
3 => "case20b25.occHH&FmM1");
Run Code Online (Sandbox Code Playgroud)
应该返回:
$wildcard='case+b25.occHH&FmM+';
Run Code Online (Sandbox Code Playgroud)
在这个例子中,棘手的部分是:
- 重复字符,例如"删除"部分中的1 - > 11,以及公共部分中的c - > cc
- $ array中的"2"字符[2]和[ 3]在"删除"部分不在同一位置
- 最后一个字符串末尾的"1"字符
我真的需要帮助,因为我找不到这个功能的解决方案,它是我的应用程序的主要部分.
在此先感谢,不要犹豫提问,我会尽快回答.
Mykeul
主要代码:
步骤 1:将字符串按长度从最短到最长排序,放入 array[]
步骤 2:比较 array[0] 和 array[1] 中的字符串,得到 $temp_wildcard
步骤 3:将 array[2] 中的字符串与 $ 进行比较temp_wildcard 创建新的 $temp_wildcard
第 4 步:继续将每个字符串与 $temp_wildcard 进行比较 - 最后一个 $wildcard 是您的 $temp_wildcard
好的,现在我们解决如何比较两个字符串以返回通配符字符串的问题。
子例程代码:逐个字符比较字符串,当比较不匹配时将通配符替换为返回值。
要处理不同长度的问题,请对第二个字符串较长且有偏移量的每个字符额外运行此比较一次。(比较 string1[x] 与 string2[x+offset]。)对于每个返回的字符串,计算通配符的数量。子例程应返回具有最少数量通配符的答案。
祝你好运!