2544.交替数字和

【LetMeFly】2544.交替数字和

力扣题目链接:https://leetcode.cn/problems/alternating-digit-sum/

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

  • 最高有效位 上的数字分配到 号。
  • 剩余每位上数字的符号都与其相邻数字相反。

返回所有数字及其对应符号的和。

 

示例 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

 

方法一:模拟

首先将数字转为字符串,从下标0开始遍历字符串的每一位:

  • 如果当前下标是偶数,就加上这一位
  • 否则,就减去这一位(加上$-1\times 这一位$)

最终返回累加的和即可

  • 时间复杂度$O(\log n)$
  • 空间复杂度$O(\log n)$

AC代码

C++

1
2
3
4
5
6
7
8
9
10
11
class Solution {
public:
int alternateDigitSum(int n) {
string s = to_string(n);
int ans = 0;
for (int i = 0; i < s.size(); i++) {
ans += (i % 2 ? -1 : 1) * (s[i] - '0');
}
return ans;
}
};

Python

1
2
3
4
class Solution:
def alternateDigitSum(self, n: int) -> int:
s = str(n)
return sum((-1 if i % 2 else 1) * (ord(s[i]) - ord('0')) for i in range(len(s)))

同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/131673485


2544.交替数字和
https://blog.letmefly.xyz/2023/07/12/LeetCode 2544.交替数字和/
作者
Tisfy
发布于
2023年7月12日
许可协议