请选择 进入手机版 | 继续访问电脑版
MSIPO技术圈 首页 IT技术 查看内容

入门力扣自学笔记272 C++ (题目编号:2544)

2023-07-13

2544. 交替数字和

题目:

给你一个正整数 n 。n 中的每一位数字都会按下述规则分配一个符号:

最高有效位 上的数字分配到 正 号。
剩余每位上数字的符号都与其相邻数字相反。
返回所有数字及其对应符号的和。


示例 1:

输入:n = 521
输出:4
解释:(+5) + (-2) + (+1) = 4


示例 2:

输入:n = 111
输出:1
解释:(+1) + (-1) + (+1) = 1


示例 3:

输入:n = 886996
输出:0
解释:(+8) + (-8) + (+6) + (-9) + (+9) + (-6) = 0


提示:

1 <= n <= 109

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/alternating-digit-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


思路:

首先,我们将数字n转换成字符串。

其次,我们对字符串中每一个位置进行遍历,并且在加入总和之前先乘一个符号位,这里的符号位初始为1,其次每次循环都令它乘一个-1即可。

最后,返回最终答案即可。


代码:

class Solution {
public:
    int alternateDigitSum(int n) {
        string sup = to_string(n);
        int sum = 0;
        int flag = 1;
        for(char c : sup)
        {
            int dig = c - '0';
            int sign = flag * dig;
            sum += sign;
            flag *= -1;
        }
        return sum;
    }
};

相关阅读

手机版|MSIPO技术圈 皖ICP备19022944号-2

Copyright © 2023, msipo.com

返回顶部