当前位置: 面试刷题>> 加一(经典算法150题)


### 题目描述 给定一个非负整数(表示为字符串),将该数加1。注意,当数字增加后,可能会产生新的最高位。 例如: - 输入:"123" - 输出:"124" 如果输入的数字接近整数的最大值,比如 "999",则输出应该是 "1000"。 ### 示例代码 #### PHP 示例 ```php function plusOne($digits) { $length = strlen($digits); $carry = 1; // 初始进位为1 $result = ''; for ($i = $length - 1; $i >= 0; $i--) { $sum = intval($digits[$i]) + $carry; // 当前位与进位相加 $result = strval($sum % 10) . $result; // 取个位数并添加到结果字符串前 $carry = floor($sum / 10); // 更新进位 } if ($carry > 0) { $result = strval($carry) . $result; // 如果最高位有进位,则添加到结果字符串前 } return $result; } // 示例 echo plusOne("123"); // 输出: 124 echo plusOne("999"); // 输出: 1000 ``` #### Python 示例 ```python def plusOne(digits): carry = 1 result = [] for digit in reversed(digits): total = int(digit) + carry result.append(str(total % 10)) carry = total // 10 if carry > 0: result.append(str(carry)) return ''.join(reversed(result)) # 示例 print(plusOne("123")) # 输出: 124 print(plusOne("999")) # 输出: 1000 ``` #### JavaScript 示例 ```javascript function plusOne(digits) { let carry = 1; let result = []; for (let i = digits.length - 1; i >= 0; i--) { let sum = parseInt(digits[i]) + carry; result.unshift(sum % 10); // 将个位数添加到结果数组的前面 carry = Math.floor(sum / 10); // 更新进位 } if (carry > 0) { result.unshift(carry); // 如果最高位有进位,则添加到结果数组的前面 } return result.join(''); // 将结果数组转换为字符串 } // 示例 console.log(plusOne("123")); // 输出: 124 console.log(plusOne("999")); // 输出: 1000 ``` 以上代码示例均实现了题目要求的功能,即将给定的非负整数(字符串形式)加1,并处理进位情况。在面试中,能够清晰解释算法思路并正确实现是获得好评的关键。
推荐面试题