力扣题:高精度运算-1.4

news2025/2/22 18:59:01

力扣题-1.4

[力扣刷题攻略] Re:从零开始的力扣刷题生活

力扣题1:306. 累加数

解题思想:首先先通过secondStart和secondEnd可以确定num1 = num[0:secondStart],num2 = num[secondStart:secondEnd],然后遍历secondStart和secondEnd进行第二个数字的提取,然后通过check函数进行判断是否合法。

在这里插入图片描述

class Solution(object):
    def isAdditiveNumber(self, num):
        """
        :type num: str
        :rtype: bool
        """
        n = len(num)
        ## 遍历secondStart和secondEnd即可,因为num1 = num[0:secondStart],num2 = num[secondStart:secondEnd]
        ## secondStart从1开始,secondEnd从secondStart+1开始
        for secondStart in range(1,n-1):
            ## 判断特殊条件num1=0
            if num[0] == '0' and secondStart!=1:
                break
            for secondEnd in range(secondStart,n-1):
                ## 判断特殊条件num2=0
                if num[secondStart] == '0' and secondStart != secondEnd:
                    break
                num1 = num[0:secondStart]
                num2 = num[secondStart:secondEnd+1]
                num3 = num
                if self.check(num1,num2,num3):
                    return True
        return False
    
    def add(self,num1,num2):
        ## 进行字符串的加法操作,从低位开始相加
        i, j = len(num1) - 1, len(num2) - 1
        add = 0
        ans = list()
        while i >= 0 or j >= 0 or add != 0:
            x = int(num1[i]) if i >= 0 else 0
            y = int(num2[j]) if j >= 0 else 0
            result = x + y + add
            ans.append(str(result % 10))
            add = result // 10
            i -= 1
            j -= 1
        ## 最后需要进行翻转
        return "".join(ans[::-1])

    def check(self,num1,num2,num3):
        n = len(num3)
        num3 = num3[len(num1)+len(num2):]
        flag = 1
        while num3 != "" and flag == 1:
            temp = self.add(num1,num2)
            temp_len = len(temp)
            curr_num = num3[:temp_len]
            if curr_num == temp:
                num1 = num2
                num2 = temp
                num3 = num3[temp_len:]
            else:
                flag = 0
        if flag == 0:
            return False
        return True

class Solution {
public:
    bool isAdditiveNumber(string num) {
        int n = num.length();
        
        for (int secondStart = 1; secondStart < n - 1; ++secondStart) {
            if (num[0] == '0' && secondStart != 1) {
                break;
            }
            
            for (int secondEnd = secondStart; secondEnd < n - 1; ++secondEnd) {
                if (num[secondStart] == '0' && secondStart != secondEnd) {
                    break;
                }
                
                string num1 = num.substr(0, secondStart);
                string num2 = num.substr(secondStart, secondEnd - secondStart + 1);
                string num3 = num;
                
                if (check(num1, num2, num3)) {
                    return true;
                }
            }
        }
        
        return false;
    }

    string add(string num1, string num2) {
        int i = num1.length() - 1;
        int j = num2.length() - 1;
        int add = 0;
        string result = "";

        while (i >= 0 || j >= 0 || add != 0) {
            int x = (i >= 0) ? (num1[i] - '0') : 0;
            int y = (j >= 0) ? (num2[j] - '0') : 0;
            int sum = x + y + add;

            result = char(sum % 10 + '0') + result;
            add = sum / 10;

            i -= 1;
            j -= 1;
        }

        return result;
    }

    bool check(string num1, string num2, string num3) {
        int n = num3.length();
        num3 = num3.substr(num1.length() + num2.length());

        int flag = 1;
        while (!num3.empty() && flag == 1) {
            string temp = add(num1, num2);
            int tempLen = temp.length();
            string currNum = num3.substr(0, tempLen);

            if (currNum == temp) {
                num1 = num2;
                num2 = temp;
                num3 = num3.substr(tempLen);
            } else {
                flag = 0;
            }
        }

        return (flag == 1);
    }
};

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

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

相关文章

理解二叉树的遍历(算法村第七关白银挑战)

二叉树的前序遍历 144. 二叉树的前序遍历 - 力扣&#xff08;LeetCode&#xff09; 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3]解 LeetCode以及面试中提供的方法可能…

如何使用WebSecProbe对Web应用程序执行复杂的网络安全评估

关于WebSecProbe WebSecProbe是一款功能强大的Web应用程序网络安全评估工具&#xff0c;该工具专为网络安全爱好者、渗透测试人员和系统管理员设计&#xff0c;可以执行精确而深入的复杂网络安全评估。 该工具简化了审查网络服务器和应用程序的复杂过程&#xff0c;允许广大研…

计算机创新协会冬令营——暴力枚举题目06

我给大家第一阶段的最后一道题就到这里了&#xff0c;下次得过段时间了。所以这道题简单一点。但是足够经典 下述题目描述和示例均来自力扣&#xff1a;两数之和 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target …

CAVER: Cross-Modal View-Mixed Transformer for Bi-Modal Salient Object Detection

目录 一、论文阅读笔记&#xff1a; 1、摘要&#xff1a; 2、主要贡献点&#xff1a; 3、方法&#xff1a; 3.1 网络的总体框架图&#xff1a; 3.2 Transformer-based Information Propagation Path (TIPP) 3.3 Intra-Modal/Cross-Scale Self-Attention (IMSA/CSSA) Q1…

谷歌Google插件离线导出、安装

离线导出&#xff1a; 1.进入当前用户路径下&#xff1a; %userprofile%\AppData\Local\Google\Chrome\User Data\Default\Extensions 2.详情查看ID,即对应上述文件夹路径下插件文件名&#xff01; 3.压缩成ZIP包! 离线导入&#xff1a; 1.打开开发者模式 2.导入上述解压的压…

MySQL基础笔记(5)DCL数据控制语句

数据控制语句&#xff0c;用来管理数据库用户、控制数据库的访问权限~ 目录 一.用户管理 1.查询用户 2.创建用户 3.修改用户密码 4.删除用户 二.权限管理 1.查询权限 2.授予权限 3.撤销权限 一.用户管理 1.查询用户 use MySQL; select * from user; 2.创建用户 crea…

【C/C++】轻量级跨平台 开源串口库 CSerialPort

文章目录 1、简介2、支持的平台3、已经支持的功能4、Linux下使用5、使用vcpkg安装CSerialPort6、交叉编译7、效果图8、基于CSerialPort的应用8.1、CommMaster通信大师8.2、CommLite串口调试器 1、简介 Qt 的QSerialPort 已经是跨平台的解决方案&#xff0c;但Qt开发后端需要 Q…

高性价比的高速吹风机/高速风筒解决方案,基于普冉单片机开发

高速吹风机是今年非常火的一款产品&#xff0c;快速崛起并颠覆了传统吹风机&#xff0c;高速吹风机也成为了传统吹风机替代的一个大趋势。高速吹风机是利用高转速产生的大风量来快速吹干头发&#xff0c;由于其精巧的外观设计、超低的噪声、出色的干发效果&#xff0c;高速吹风…

篇二:springboot2.7 OAuth2 server使用jdbc存储RegisteredClient

上一篇 <<springboot 2.7 oauth server配置源码走读一>>中简单描述了oauth2 server的配置&#xff0c;其中使用了内存保存 RegisteredClient&#xff0c;本篇改用mysql存储。 db存储需要创建表&#xff0c;表结构应该是什么样的呢&#xff0c;从spring给我们封装好…

国际光伏展

国际光伏展是一个专门展示和推广光伏技术和产品的国际性展览会。光伏技术是一种利用光能转化为电能的技术&#xff0c;被广泛应用于太阳能发电系统和其他可再生能源系统中。国际光伏展汇集了来自全球的光伏企业、研究机构和专业人士&#xff0c;展示最新的光伏产品、技术和解决…

量子经济应用新道路!德国旗舰项目PlanQK首次公布研究成果

&#xff08;图片来源&#xff1a;网络&#xff09; 作为人工智能创新竞赛的一部分&#xff0c;由量子开放平台和生态系统公司Anaqor AG与斯图加特大学牵头、联邦经济事务和气候保护部资助的PlanQK研究项目&#xff0c;经过四年的深入研究&#xff0c;于近期公布了其研究成果&…

圣诞节来临,如何用海外云手机给亚马逊店铺引流?

马上就要到圣诞节了&#xff0c;这是一年中冲刺销售量的最后一个好机会&#xff0c;对所有亚马逊卖家都十分重要。而无论是亚马逊新手卖家还是老卖家&#xff0c;要想在激烈的竞争中取胜&#xff0c;仅仅靠产品本身是不现实的&#xff0c;通过测评和社媒引流获取更多曝光和流量…

如何使用 NFTScan NFT API 在 PlatON 网络上开发 Web3 应用

PlatON 是由万向区块链和矩阵元主导开发的面向下一代的全球计算架构&#xff0c;创新性的采用元计算框架 Monad 和基于 Reload 覆盖网络的同构多链架构&#xff0c;其愿景是成为全球首个提供完备隐私保护能力的运营服务网络。它提供计算、存储、通讯服务&#xff0c;并提供算力…

淘宝以图搜商品API调用详细步骤(apiKeysecret)

以图片来搜索商品是电商平台常见的一个功能&#xff0c;一般用于搜索同款、找爆品、淘宝拍立淘等功能。 通过item_search_img可以实现通过图片来搜索同款商品列表&#xff0c;响应参数包括宝贝标题、列表类型、宝贝图片、优惠价、价格、销量、宝贝ID、商品风格标识ID、掌柜昵称…

数据结构—图(上)

文章目录 12.图(上)(1).图的基本概念#1.图的基本定义#2.边的分类#3.数据结构的一些规定#4.子图#5.完全图#6.路径#7.连通性和连通分量#8.度 (2).图的存储方式#1.邻接矩阵#2.邻接表 (3).图的遍历#1.深度优先搜索(Depth First Search)i.走个迷宫ii.DFS的思想iii.代码实现 #2.广度优…

Linux:apache优化(3)—— 页面缓存时间

作用&#xff1a;通过 mod_expires 模块配置 Apache&#xff0c;使网页能在客户端浏览器缓存一段时间&#xff0c;以避免重复请求&#xff0c;减轻服务端工作压力。启用 mod_expires 模块后&#xff0c;会自动生成页面头部信息中的 Expires 标签和 CacheControl 标签&#xff0…

COCO Dataset Format

COCO (Common Objects in Context) dataset数据集是一个广泛应用于目标检测、语义分割的数据集&#xff0c;包含330K 图片数据 与 2.5 million 个目标实体。 1.数据集下载 !wget http://images.cocodataset.org/zips/train2017.zip -O coco_train2017.zip !wget http://image…

宝塔面板yum安装指南

1、执行 yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec2、QA 提示抱歉&#xff0c;连接宝塔官网失败&#xff0c;请切换节点后重试服务器终端 分别执行这2条命令 mv /www/server/pa…

1.4 day4 IO进程线程

使用两个子进程进行文件拷贝&#xff0c;父进程进行资源回收 #include <myhead.h> int main(int argc, const char *argv[]) {//创建一个文件描述符并以只读的方式打开int fd-1;if((fdopen("./test.bmp",O_RDONLY))-1){perror("open error");return…

私有云平台搭建openstack和ceph结合搭建手册

OpenStack与云计算 什么是云&#xff1f; 如何正确理解云&#xff0c;可以从以下几个方面。 云的构成。 用户&#xff1a;对用户而言是透明无感知的&#xff0c;不用关心底层构成&#xff0c;只需要知道利用云完成自己任务即可。 云提供商&#xff1a;对云资产管理和运维。 云…