【力扣算法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))

效果截图


完结


相关文章
|
10天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
41 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
10天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
36 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
10天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
50 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
15天前
|
存储 算法 Java
leetcode算法题-有效的括号(简单)
【11月更文挑战第5天】本文介绍了 LeetCode 上“有效的括号”这道题的解法。题目要求判断一个只包含括号字符的字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合,并且左括号必须以正确的顺序闭合。解题思路是使用栈数据结构,遍历字符串时将左括号压入栈中,遇到右括号时检查栈顶元素是否匹配。最后根据栈是否为空来判断字符串中的括号是否有效。示例代码包括 Python 和 Java 版本。
|
15天前
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
32 2
|
24天前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
26 3
|
27天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
72 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
1月前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
3月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
115 2
下一篇
无影云桌面