【面试题】100位整数相加,PHP实现。

同样是面试题,记录下我的做法。

<?php

function randNumber($length) {
    $str = null;
    $strPol = '0123456789';
    $max = strlen($strPol) - 1;

    for($i=0; $i < $length; $i++){
        $str .= $strPol[rand(0, $max)];  //rand($min,$max)生成介于min和max两个数之间的一个随机整数
    }

    return $str;
}

function addition4OneHundred($param1, $param2) {
    $lenParam1 = strlen($param1);
    $lenParam2 = strlen($param2);
    
    if ($lenParam1 >= $lenParam2) {
        $largeNum = $param1;
        $largeLen = $lenParam1;
        $smallNum = $param2;
        $smallLen = $lenParam2;
    } else {
        $largeNum = $param2;
        $largeLen = $lenParam2;
        $smallNum = $param1;
        $smallLen = $lenParam1;
    }
     
    $carryNum = $modNum = 0;
    
    $i = $largeLen - 1;
    $j = $smallLen - 1;
    for (; $i >= 0; $i--, $j--) {
        $addend = $j < 0 ? 0 : intval($smallNum[$j]);
        $sum = intval($largeNum[$i]) + $addend + $carryNum;
        
        $modNum = $sum % 10;
        $carryNum = $sum != $modNum ? 1 : 0;
        
        $result = $modNum . $result;
        
        if ($i == 0 && $carryNum) {
            $result = $carryNum . $result;
        }
    }
    return $result;
}

$number1 = randNumber(100);
$number2 = randNumber(100);

// $number1 = '90000000001';
// $number2 = '9999999999';

$answer = addition4OneHundred($number1, $number2);

echo $number1 . ' + ' . $number2 . ' = ' . $answer;


转载于:https://my.oschina.net/u/2600995/blog/662351

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值