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

news2024/11/15 6:53:09

文章目录

  • 问题描述
    • 示例1
    • 示例 2
    • 示例 3
    • 提示
  • 思路分析
  • 代码分析
  • 完整代码
    • 运行示例
      • 效果截图
  • 完结

问题描述

在这里插入图片描述

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

效果截图

在这里插入图片描述

完结

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/748957.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

这5款多 GPU 渲染器提升渲染能力,赶紧用起来

多 GPU 渲染的强大功能可以使您的渲染能力增加一倍、三倍或更多。使用合适的多GPU渲染引擎可以帮助您在短时间内以更快的速度获得高质量的产品。什么是真正的多 GPU 渲染&#xff1f;最好的多 GPU 渲染引擎是什么&#xff1f; 什么是多 GPU 渲染和多 GPU 渲染引擎&#xff1f;…

编译mysql8.0.33遇见错误libstdc++.so.6: version CXXABI_1.3.9 not found

1 现象 在执行make编译mysql8.0.33时&#xff0c;遇见报错信息&#xff1a; /lib64/libstdc.so.6: version CXXABI_1.3.9 not found&#xff0c; 查看版本发现只是1.3.7。 2 解决方案 2.1 解决方案1 安装glibc-2.18。 2.1 解决方案2 执行如下指令&#xff0c;将新文件替…

[微信小程序] movable-view 可移动视图容器 - 范围问题

movable-view 可移动视图容器 可移动视图容器&#xff0c;在页面中可以拖拽滑动。movable-view必须在 movable-area 组件中&#xff0c;并且必须是直接子节点 <view><movable-area style"width: 750rpx;height: 200rpx;background-color: gainsboro;">&l…

【力扣算法10】之 7. 整数反转 python

文章目录 问题描述示例1示例2示例3示例4提示 思路分析代码分析完整代码详细分析运行效果截图调用示例运行结果 完结 问题描述 给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] &…

(Onenet)STM32L+BC20+MQTT协议传输温湿度,ADC,电压,GPS数据到Onenet物联网平台

1、材料准备 准备以下材料 2、设备连接 2.1 插入物联网卡 首先把BC20核心板从开发板上拆下来 然后将物联卡放置在BC20核心板内 物联卡放置完成将BC20核心板重新插入到开发板内&#xff08;注意不要弄错方向&#xff09; 同时接入天线 2.2 连接ST-Link仿真器 用3条杜邦线接…

python接口自动化(三十四)-封装与调用--函数和参数化(详解)

简介 前面虽然实现了参数的关联&#xff0c;但是那种只是记流水账的完成功能&#xff0c;不便于维护&#xff0c;也没什么可读性&#xff0c;随着水平和技能的提升&#xff0c;再返回头去看前边写的代码&#xff0c;简直是惨不忍睹那样的代码是初级入门的代码水平都达不到。接下…

股票开户手续费最低的券商有哪些?揭秘券商成本佣金,交易费率原来可以这么低!

哪个券商手续费最低实际上是没有这种说法的&#xff0c;想要低手续费一定要联系线上客户经理办理开户&#xff0c;是可以和线上客户经理协商降低手续费的&#xff0c;一定要通过线上客户经理特殊渠道开户&#xff0c;才能享受低手续费账户&#xff0c;还可以办理到vip账户&…

Python中可以用三种方法判断文件是否存在

目录 前言1.使用os模块2.使用Try语句3. 使用pathlib模块尾语 &#x1f49d; 前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 通常在读写文件之前&#xff0c;需要判断文件或目录是否存在&#xff0c;不然某些处理方法可能会使程序出错。 所以最好在做任何操作之前&#xff…

spring复习:(22)实现了BeanNameAware等Aware接口的bean,相应的回调方法是在哪里被调用的?

AbstractAutowireCapableBeanFactory的doCreateBean用来创建bean, 其中调用了initializeBean方法对bean进行初始化 initializeBean包含如下代码&#xff1a; 而invokeAwareMethods代码如下&#xff1a; 可见其分别判断是否实现了BeanNameAware接口、BeanClassLoaderAware接口…

【Linux指令sudo与Linux编译器-gcc/g++】

目录 一、sudo1.1为什么我用不了sudo命令1.2如何将普通用户添加到信任列表里面 二、Linux编译器-gcc/g使用2.1背景知识2.2gcc如何完成上面的4个功能&#xff1f;2.3函数库 一、sudo sudo是linux系统管理指令&#xff0c;是允许系统管理员让普通用户执行一些或者全部的root命令…

金融行业数据安全相关法律法规及政策汇总

如今随着大数据和“互联网”等新兴技术的拓展&#xff0c;数据的作用也在不断凸显&#xff0c;金融业是产生和积累数据量最大、数据类型最丰富的行业之一&#xff0c;数据安全与个人信息保护在新时代也面临新的风险与挑战。 根据《中国银行保险报》与亚信网络安全产业技术研究院…

CCPC 2022济南站+2020威海站+2019秦皇岛站+2022绵阳站(部分)(暑假集训)

目录 Tower Frozen Scoreboard Identical Parity​编辑 Best Carry Player Stack Sort Invoker MUV LUV EXTRA Forest Program Angle Beats Catch You Catch Me Tower 思路&#xff1a; 提前进行/2的预处理操作&#xff0c;操作之后 &#xff0c;在记录下要达到一样的步骤…

JavaFX 基础

1.JavaFX应用的程序基本结构 窗口(stage)&#xff1a;窗口里面可以设置场景&#xff0c;但是一次只能显示一个场景。 场景(scene)&#xff1a;场景可以添加UI组件图的树形结构。 根节点(parent)&#xff1a;根节点设置为一个布局&#xff0c;放置不同的节点(组件)。可以在根节…

备战秋招 | 笔试强训2

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、使用printf函数打印一个double类型的数据&#xff0c;要求&#xff1a;输出为10进制&#xff0c;输出左对齐30个字符&#xff0c;4位精度。以下哪个选项是正确的&#xff1f; A. %-30.4e B. %4.…

白皮书案例解读|数字孪生与港口的结合会碰撞出什么样的火花呢?

以下案例来自于《数字孪生世界白皮书&#xff08;2023版&#xff09;》 领取方式&#xff1a;公众号「EasyV数字孪生」后台回复「白皮书」即可领取&#xff01; 嗨&#xff0c;我又出现啦&#xff5e;今天想和大家聊聊关于港口场景数字孪生技术的应用&#xff0c;欢迎大家踊跃…

Linux登录时,下游回显非常慢

目录 问题现象 原因分析 解决方法 源码等资料获取方法 问题现象 登录linux时&#xff0c;远程连接正常&#xff0c;[root...]回显非常慢&#xff0c;在执行脚本时&#xff0c;很容易导致命令下发错乱 原因分析 家目录下的.bash_history文件太大&#xff0c;导致每次登陆时读…

magento2 二次开发如何自定义theme

1.在app\design\frontend下创建自定义Theme文件夹&#xff0c;格式为Vendor/ThemeName&#xff0c;比如TestCompany/test 2.在TestCompany/test目录下创建文件夹和文件如下&#xff1a; etc 非必须创建 在此目录下添加view.xml&#xff0c;内容如下&#xff1a; view.xml可定…

Occupy the Cities - 思维+二分

分析&#xff1a; 分析每一个0的位置&#xff0c;记录每一个0距离两侧的1的最近距离&#xff0c;每一个1要么向左扩展要么向右扩展&#xff0c;可以将扩展过的1标记&#xff0c;如果需要向另一侧扩展&#xff0c;那么必须满足距离另一侧的0的距离加1小于等于时间&#xff0c;比…

网络安全行业的那些岗位

网络安全行业&#xff0c;正在蓬勃发展&#xff0c;想要找网络安全岗位的&#xff0c;可以参考这篇文章 一、网络安全岗位 1、需要网络安全人员的企业 有三种企业招聘网络安全人员&#xff1a;乙方企业、甲方企业、国有企业 乙方企业是专门从事网络安全行业的企业&#xff0c…

用Arthas快速定位线上JVM问题!

Arthas分析FullGC问题定位 对于FullGC那一定不会陌生,一般来说会采用横切FullGC前置拦截(-XX:+HeapDumpBeforeFullGC)和后置拦截(-XX:+HeapDumpAfterFullGC),导出FullGC发生前后的heap dump文件,以便于我们进行FullGC原因的分析和定位。 推测分析问题之FullGC的频率过高…