交替数字和【LC2544】
给你一个正整数
n
。n
中的每一位数字都会按下述规则分配一个符号:
- 最高有效位 上的数字分配到 正 号。
- 剩余每位上数字的符号都与其相邻数字相反。
返回所有数字及其对应符号的和。
-
思路
模拟,对10取模从低位开始取出每一位数字,假设奇数位分配到正数,偶数位分配到负数,记录对应和在res中。最后如果最高位为偶数位,则返回res的相反数
-
实现
class Solution { public int alternateDigitSum(int n) { int res = 0, count = 0; while (n > 0){ count++; if (count % 2 == 0){ res += n % 10; }else{ res -= n % 10; } n /= 10; } return count % 2 == 0 ? res : -res; } }
-
复杂度分析
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( 1 ) O(1) O(1)
-