gpt4 book ai didi

php - 如何使用自定义字符集增加字符串

转载 作者:搜寻专家 更新时间:2023-10-31 21:20:01 24 4
gpt4 key购买 nike

给定一个自定义字母表,如 ['f', 'h', 'z', '@', 's']

我想拿一个用这个“字母”写的字符串,比如

ffff@zz 并增加它

例如,如果字符串是 sss 在递增后它看起来像 hfff 与递增 999 相同,你会得到 1000

我目前的尝试在这里:https://3v4l.org/FjAsd

给定:

$characters = ['a', 'b', 'c'];
$string = 'cccc';

我的代码可以做:

baaaa

但如果给它

$characters = ['a', 'b', 'c'];
$string = 'aaa';

它会回来的b

当我期待 aab

最佳答案

它的工作方式是从末尾开始处理字符串,每次查看一个字符时都会检查它在数组中的位置(我使用翻转数组,因为它比使用 array_search()每次)。然后,如果该字符位于数组的末尾,则将其设置为字母表的第 0 个元素,并向左递增下一个数字。如果字母表中有另一个字母来增加当前值,则只需替换它并停止循环。

最后一点是,如果你已经处理了每个字符并且循环仍在继续,那么就有一个进位 - 所以将第 0 个数字添加到开头。

$characters = ['a', 'b', 'c'];
$string = 'cccc';

$index = array_flip($characters);
$alphabetCount = count($index)-1;
for ( $i = strlen($string)-1; $i >= 0; $i--) {
$current = $index[$string[$i]]+1;
// Carry
if ( $current > $alphabetCount ) {
$string[$i] = $characters[0];
}
else {
// update and exit
$string[$i] = $characters[$current];
break;
}
}
// As reached end of loop - carry
if ( $i == -1 ) {
$string = $characters[0].$string;
}
echo $string;

给予

aaaaa

$characters = ['f', 'h', 'z', '@', 's'];
$string = 'ffff@zz';

你得到

ffff@z@

关于php - 如何使用自定义字符集增加字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54726458/

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