php中已知一个长度为20全为数字的字符串,怎么求这个字符串的最大乘积子串,其中子串长度为4

2025-04-14 04:44:46
推荐回答(2个)
回答1:

//暴力解法

$numStr='23484901923434518703';
$numArr=str_split($numStr);

//连续长度
$len=4;
//最大乘积
$max=0;
//子串记录
$maxStr='';

for($i=0;$i<=count($numArr)-$len;$i++){
    $_max=1;
$_maxStr='';

    for($j=$i;$j<$i+$len;$j++){
        $_max*=$numArr[$j];
$_maxStr.=$numArr[$j].'-';
    }
    if($_max>$max){
$max=$_max;
$maxStr=rtrim($_maxStr,'-');
}
}
echo $max;
echo '
';
echo $maxStr;

回答2:

思路:
1、用字符串截取,每次取4个,字串是连续的,那么只有17个字串
2、把这些字串转化为4位数比较大小 找出最大的和第二大的 就是了