2023-07-12每日一题
一、题目编号
2544. 交替数字和
二、题目链接
三、题目描述
给你一个正整数 n 。n 中的每一位数字都会按下述规则分配一个符号:
- 最高有效位 上的数字分配到 正 号。
- 剩余每位上数字的符号都与其相邻数字相反。
返回所有数字及其对应符号的和。
提示:
- 1 <= n <= 109
四、解题代码
class Solution {
public:
int alternateDigitSum(int n) {
string str = to_string(n);
int res = 0;
int m = str.size();
for(int i = 0; i < m; ++i){
if(i & 1){
res += ((str[i] - '0') * -1);
} else{
res += (str[i] - '0');
}
}
return res;
}
};
class Solution:
def alternateDigitSum(self, n: int) -> int:
res = 0
for i, s in enumerate(str(n)):
if i % 2 == 0:
res += int(s)
else:
res += -1 * int(s)
return res;
public class Solution {
public int AlternateDigitSum(int n) {
int res = 0, sign = 1;
while (n > 0) {
res += n % 10 * sign;
sign = -sign;
n /= 10;
}
return res * -sign;
}
}
class Solution {
public int alternateDigitSum(int n) {
int res = 0, sign = 1;
while (n > 0) {
res += n % 10 * sign;
sign = -sign;
n /= 10;
}
return -sign * res;
}
}
五、解题思路
(1) 只需要进行模拟即可,下面谈cpp和python代码的思路。java和c#思路类似。
(2) 将数字n转化成字符串,那么我们只需要进行从高位进行模拟即可。最高有效位为正,意味着字符串的偶数下标所对应的数字需要加上,奇数下标所对应的数字需要减去。
(3) 最终返回结果即可得到最终的结果。