【力扣算法06】之 _2544_ 交替数字和- python

简介: 【力扣算法06】之 _2544_ 交替数字和- python

问题描述


给你一个正整数 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

思路分析

  • 这个问题要求根据一定规则给定正整数 n 中的每一位数字分配一个符号,并计算所有数字及其对应符号的和。
  • 首先,我们将正整数 n 转换为字符串,这样方便逐位处理。然后,我们需要遍历每一位数字,并根据规则确定它的符号。
  • 在遍历过程中,我们可以使用一个变量 result 来保存结果,并初始化为 0。另外,我们还需要一个变量 sign 来保存当前位的符号,初始值设为 1。
  • 接下来,我们可以使用一个循环来遍历每一位数字。对于每一位数字,我们需要根据其相邻数字的符号来确定自己的符号。当位于最高有效位时,我们将其符号设为正号;而对于其他位的情况,我们将其符号与相邻数字的符号相反。
  • 将当前位的数字乘以符号,并累加到 result 中。完成遍历后,result 就是我们要求的所有数字及其对应符号的和。
  • 最后,我们返回 result 即可作为最终的结果。
  • 这样就完成了对给定正整数 n 的每一位数字求符号和的算法。可以使用上述提供的代码来实现和验证该算法。


代码分析


class Solution(object):
    def alternateDigitSum(self, n):

上述代码定义了一个名为 Solution 的类,并在其中定义了一个名为 alternateDigitSum 的方法。这个方法接受一个参数 n,表示正整数。

digits = str(n)

将正整数 n 转换为字符串类型,以便逐位处理。将转换后的字符串赋值给变量 digits

result = 0
sign = 1

初始化结果变量 result 和符号变量 sign,初始值分别为 0 和 1。

for i in range(len(digits)):

使用 range 函数遍历 digits 字符串中的每一个索引值 i

if i == 0:
    sign = 1
else:
    sign *= -1

如果当前索引 i 是最高有效位(即索引为 0),则将 sign 的值设为 1,表示正号。否则,将 sign 的值乘以 -1,表示与前一个数字的符号相反。

result += int(digits[i]) * sign

将当前索引 i 对应的字符转换为整数,并乘以 sign,然后加到 result 中。

return result

返回最终的结果 result

整体来看,该算法逐位遍历给定正整数的每一位数字,根据规则确定每个数字的符号,并将符号与数字相乘后累加到结果中。最终返回所有数字及其对应符号的和。

创建 Solution 类的对象,并调用 alternateDigitSum 方法来计算给定数值 n 的结果。


完整代码


class Solution(object):
     def alternateDigitSum(self,n):
        digits = str(n)  # 将正整数 n 转换为字符串类型,以便逐位处理
        result = 0  # 初始化结果变量为 0
        sign = 1  # 初始化符号变量为 1(表示正号)
        for i in range(len(digits)):  # 遍历字符串 digits 中的每一个索引值 i
            if i == 0:
                sign = 1  # 如果是最高有效位(即索引为 0),则将符号设为正号
            else:
                sign *= -1  # 否则,将符号与前一个数字的符号相反
            result += int(digits[i]) * sign  # 将当前位的数字乘以符号,并累加到结果中
        return result  # 返回最终结果

运行示例

# 示例用法
solution = Solution()
print(solution.alternateDigitSum(521))
print(solution.alternateDigitSum(111))
print(solution.alternateDigitSum(886996))

效果截图


完结


相关文章
|
1天前
|
机器学习/深度学习 算法 TensorFlow
【图像识别】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别
谷物识别系统,本系统使用Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经算法网络模型,通过对11种谷物图片数据集('大米', '小米', '燕麦', '玉米渣', '红豆', '绿豆', '花生仁', '荞麦', '黄豆', '黑米', '黑豆')进行训练,得到一个进度较高的H5格式的模型文件。然后使用Django框架搭建了一个Web网页端可视化操作界面。实现用户上传一张图片识别其名称。
14 0
【图像识别】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别
|
5天前
|
机器学习/深度学习 人工智能 算法
中草药识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
中草药识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
38 0
|
6天前
|
机器学习/深度学习 Web App开发 算法
Python 机器学习算法交易实用指南(一)(5)
Python 机器学习算法交易实用指南(一)
194 2
|
6天前
|
传感器 机器学习/深度学习 存储
Python 机器学习算法交易实用指南(一)(4)
Python 机器学习算法交易实用指南(一)
164 4
|
6天前
|
机器学习/深度学习 算法 API
Python 机器学习算法交易实用指南(一)(3)
Python 机器学习算法交易实用指南(一)
85 4
|
4天前
|
存储 索引 Python
元组(Tuple)在Python编程中的应用与实例
元组(Tuple)在Python编程中的应用与实例
17 2
|
5天前
|
机器学习/深度学习 数据可视化 数据挖掘
Python编程的深入探索与实用案例
Python编程的深入探索与实用案例
15 3
|
23小时前
|
数据采集 运维 API
适合所有编程初学者,豆瓣评分8.6的Python入门手册开放下载!
Python是一种跨平台的计算机程序设计语言,它可以用来完成Web开发、数据科学、网络爬虫、自动化运维、嵌入式应用开发、游戏开发和桌面应用开发。 Python上手很容易,基本有其他语言编程经验的人可以在1周内学会Python最基本的内容(PS:没有基础的人也可以直接学习,速度会慢一点) 今天给小伙伴们分享一份Python语言及其应用的手册,这份手册主要介绍 Python 语言的基础知识及其在各个领域的具体应用,基于最新版本 3.x。
|
1天前
|
缓存 测试技术 Python
Python编程中的装饰器应用及性能优化
装饰器是Python中一种强大的功能,它允许我们修改或增强函数或类的行为,而无需修改其本身的代码。装饰器在Python中广泛应用,包括日志记录、性能测试、事务处理、缓存等。 **一、装饰器的基础
|
2天前
|
Python 数据安全/隐私保护 开发工具
练手必备!Python编程实战—23个有趣的实战项目带你快速进阶
Python的练手项目有哪些值得推荐? 已经有6.4W关注,700W次浏览,回答都有450条了,本来遇到这种问题我是不会回答的,毕竟已经有太多人给出了答案,我再去回答就没什么意义了。 但想了想确实有很多刚学Python的并不清楚从哪里去找项目来练手,于是就有了这篇文章,基于这个目的,我也是找了好久,最后还是选择了分享这份手册,毕竟里面有细致的讲解,确实更适合练手一些。