当前位置: 面试刷题>> 加1 (经典算法题500道)


题目描述补充

题目:加1(数字字符串转换)

给定一个表示非负整数的字符串(数字可能很大,以字符串形式给出),请将这个字符串表示的整数加1,并返回结果作为字符串。

注意

  • 输入的字符串不会以0开头,除非该字符串是"0"。
  • 输入只包含数字字符。

示例

输入: "123" 输出: "124"

输入: "999" 输出: "1000"

输入: "0" 输出: "1"

PHP 代码示例

function plusOne($digits) {
    $n = strlen($digits);
    $carry = 1; // 初始进位为1
    $result = '';

    for ($i = $n - 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"
echo plusOne("0");   // 输出 "1"

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"
print(plusOne("0"))    # 输出 "1"

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"
console.log(plusOne("0"));   // 输出 "1"

希望这些示例和代码能够帮到你!如果想了解更多相关内容,可以访问码小课网站。

推荐面试题