LeetCode—306. 累加数

306. 累加数

题目描述:
累加数 是一个字符串,组成它的数字可以形成累加序列。

一个有效的 累加序列 必须 至少 包含 3 个数。除了最开始的两个数以外,序列中的每个后续数字必须是它之前两个数字之和。

给你一个只包含数字 ‘0’-‘9’ 的字符串,编写一个算法来判断给定输入是否是 累加数 。如果是,返回 true ;否则,返回 false 。

说明:累加序列里的数,除数字 0 之外,不会 以 0 开头,所以不会出现 1, 2, 03 或者 1, 02, 3 的情况。
在这里插入图片描述

考察重点:判断一个字符串是否符合前两个之和为第三个数 F(n)=F(n - 1)+F(n - 2)。我们使用go语言中的strconv是否报错来判断数字是否越界;之后只需确定起始的两个数字A,B,并找到是否存在C=A+B,如果没有则跳出(使用A,B两数的位数确定C的位数在max(A,B)与max(A,B)+1之间);有则执行A=B,B=C,继续向后遍历。

func isLegal(a, b, c int) bool {return c-a == b
}
func max1(a, b int) int {if a > b {return a}return b
}
func IsAdditiveNumber(num string) bool {numA, numB, numC, lenA, lenB, lenC := 0, 0, 0, 0, 0, 0var err error/**本题最关键是找到前两个数,用num[0:i]和num[i:j+1]分别表示前两个数lenA, lenB记录这两个数长度,则numC的长度lenC必然等于max(lenA,lenB)或者max(lenA,lenB)+1*/for i := 1; i <= len(num); i++ {if numA, err = strconv.Atoi(num[0:i]); err != nil || (i != 1 && num[0] == '0') {	//求numAcontinue}tt := numAfor j := i + 1; j <= len(num); j++ {if numB, err = strconv.Atoi(num[i:j]); err != nil || (j != i+1 && num[i] == '0') {//求numBcontinue}numA, lenA, lenB = tt, i-0, j-ilenC = max1(lenA, lenB)start, end := j, j+lenC		//记录numA,numB的长度,同时numC只可能在num[j:j+max(lenA,lenB)] 与 num[j:j+max(lenA,lenB)+1] 之中for end <= len(num) {	//**********************************************************************************************************if numC, err = strconv.Atoi(num[start:end]); err != nil || (end != start+1 && num[start] == '0') {	//如果num[start:end]大于MAXINT,直接breakbreak}lenC = end - startif !isLegal(numA, numB, numC) {	//num[start:end]!=numA+numB  则继续判断num[start:end+1]if end+1 > len(num) {break}if numC, err = strconv.Atoi(num[start : end+1]); err != nil || (end+1 != start+1 && num[start] == '0') {break}if !isLegal(numA, numB, numC) {break}lenC = lenC + 1end = end + 1		//num[start:end+1]==numA+numB   则更新lenC和end的大小}//**********************************************************************************************************if end == len(num) {		//end等于len(num)且num[start:end]==numA+numB,说明该string满足条件return true}numA, numB, lenA, lenB = numB, numC, lenB, lenC		//numA,numB整体向后,lenC,start,end重新记录新的numC可能的取值范围lenC = max1(lenA, lenB)start, end = end, end+lenC}}}return false
}

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

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

相关文章

push模式的水晶报表,参数的设置要放在数据源设置之后

不知道为什么有这个限制&#xff0c;如果放在设置数据源之前&#xff0c;在显示的时候就会提示这个参数的值未设置&#xff0c;要重新手动设置。 转载于:https://www.cnblogs.com/strinkbug/archive/2006/10/13/528243.html

oracle 10g 企业管理器无法打开解决方法

今天发现oracle 10g企业管理器无法打开&#xff0c;于是google&#xff0c;发现问题解决了。本质就是重新配置。步骤如下&#xff1a; C:\Documents and Settings\Administrator>emctl status dbconsoleEnvironment variable ORACLE_SID not defined. Please define it.C:\D…

I.MX6 Linux Qt 启动流程跟踪

/*************************************************************************** I.MX6 Linux Qt 启动流程跟踪* 声明&#xff1a;* 1. 源代码来源MY-I.MX6&#xff1b;* 2. 本文仅仅是对启动流程的解析&#xff0c;没有解释启动流程为什么是这…

deploy.php

<?php namespace Deployer;require recipe/common.php;// Project name set(application, tp_web);// Project repository set(repository, git地址);// [Optional] Allocate tty for git clone. Default value is false. set(git_tty, true); // Shared files/dirs betwee…

LeetCode—59. 螺旋矩阵 II

59. 螺旋矩阵 II 题目描述&#xff1a; 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 考察重点&#xff1a;way数组记录走的方向&#xff0c;结合DFS实现矩阵螺旋遍历。 int way[][] …

dos下查看机器端口占用情况

在dos下有一个命令netstat -a&#xff0c;但是有时候识别不出来&#xff0c;偶就遇到了这种情况。怎么解决呢&#xff1f; 在我的电脑里C:\WINDOWS\system32下有个net.exe之类的文件。 步骤如下&#xff1a; 1&#xff0c;cmd 2&#xff0c;cd C:\WINDOWS\system32 3, C:\…

HTTP调试之保持连接状态(微软知识库文章)

HTTP性能调试优化之二&#xff08;翻译&#xff0c;微软知识库文章&#xff09; 原文出自 http://technet2.microsoft.com/WindowsServer/en/library/d92d338e-efdc-4e11-83a7-9af34c8bb5291033.mspx?mfrtrue 有一系列文章&#xff0c;其中第一篇是关于HTTP 压缩的&#xff0c…

(DBA之路【十一】)master-slave 机制原理

个人分析&#xff1a;master-slave优缺点1.物理服务器增加&#xff0c;负荷增加2.主从只负责各自的写和读&#xff0c;极大程度的缓解X锁和S锁争用3.从库可配置myisam引擎&#xff0c;提升查询性能以及节约系统开销4.丛库通过主库发送来的binlog恢复数据&#xff0c;但是&#…

基于C API的SQLite3基本数据库操作

SQLite是一款开源嵌入式文件型数据库&#xff0c;这个主要是和其他一些C/S架构的关系型数据库比较而来的&#xff0c;比如MySQL等。 说他是嵌入式&#xff0c;因为SQLite的所有功能全部包装在一个dll中&#xff0c;我们只需要使用其中的导出接口就可以操作SQLite数据库&#xf…

LeetCode—307. 区域和检索 - 数组可修改

307. 区域和检索 - 数组可修改 题目描述&#xff1a; 给你一个数组 nums &#xff0c;请你完成两类查询。 其中一类查询要求 更新 数组 nums 下标对应的值 另一类查询要求返回数组 nums 中索引 left 和索引 right 之间&#xff08; 包含 &#xff09;的nums元素的 和 &#x…

loadrunner利用虚拟IP测试

LoadRunner 使用虚拟IP测试流程 设置虚拟IP地址 首先&#xff0c;load Generator机器必须使用固定的IP&#xff0c;不能使用动态IP 确定网络中不冲突的IP地址 打开&#xff1a;开始-〉程序-〉loadrunner-〉tools-〉ip wizard&#xff0c; 说明&#xff1a;增加新IP选择第一项&a…

33Exchange Server 2010跨站点部署-分支机构邮件从分支机构出

16.6 SH-ROBIN外网邮件从分部出16.6.1 创建SH-ROBIN发送连接器在上海分支机构的集线器上创建一个发送连接器SH-To Internet添加地址空间&#xff0c;并设定成本添加上海分支机构的两台HT创建好上海分支机构的发送连接器16.6.2 SH-ROBIN站的TOM发送邮件给公网CONTOSOCONTOSO的张…

74HC595芯片使用说明

74HC595是具有8位移位寄存器和一个存储器&#xff0c;三态输出功能。 移位寄存器和存储器是分别的时钟。数据在SHcp的上升沿输入&#xff0c;在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起&#xff0c;则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串…

我的设计模式之旅(4)——生成器(建造者)模式Builder

Builder模式也是创建型模式中的一种。主要用来应对构成复杂但构成结构和顺序相对稳定的对象的创建工作。目的是省去在对象发生变化时&#xff0c;需要修改代码中每一处对象创建的地方&#xff0c;应用这种模式&#xff0c;可以在一个复杂对象的内部结构(由许多其他子对象构成的…

LeetCode—309. 最佳买卖股票时机含冷冻期

309. 最佳买卖股票时机含冷冻期 题目描述&#xff1a; 给定一个整数数组prices&#xff0c;其中第 prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下&#xff0c;你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#xff…

display:inline-block的深入理解 转

在使用CSS实现表现的时候&#xff0c;会经常接触到display:inline-block这一属性&#xff0c;无论是初接触Web标准还是接触标准已久的朋友&#xff0c;大都会对这一属性感觉很迷惑和模糊。 display:inline-block 引用:将对象呈递为内联对象&#xff0c;但是对象的内容作为块对象…

innosetup区分正常状态和静默安装状态(通过传递的参数)

命令行运行程序&#xff0c;如&#xff1a; myprogram.exe /abc /bcd 如果我们想获取其中的参数&#xff0c;“/abc”、“/bcd” 1. 直接使用innosetup自带的方法&#xff0c; GetCmdTail() 将所有参数作为一个字符串返回&#xff0c;安装和卸载都适用 注意&#xff1a;如果打…

测试计划排期内容和格式要求,测试邮件回复统一格式

公司最近在做一些测试流程规范&#xff0c;每次项目立项后&#xff0c;需要确认本次项目测试负责人&#xff0c;由测试项目负责人参加完需求评审后&#xff0c;协调资源 给出测试计划排期与对应子模块负责人员到项目经理处。 下面提供给大家一个测试计划排期内容和格式文档 2.测…

LeetCode—剑指 Offer 4、9、26、35、53

剑指 Offer 4. 二维数组中的查找、9. 用两个栈实现队列、26. 树的子结构、35. 复杂链表的复制、53 - I. 在排序数组中查找数字 I 题目描述&#xff1a; [4] 在一个 n * m 的二维数组中&#xff0c;每一行都按照从左到右递增的顺序排序&#xff0c;每一列都按照从上到下递增的顺…

关于VerifyError

http://slurp.doc.ic.ac.uk/pubs/observing/linking.htmlhttp://blog.csdn.net/smilingleo?viewmodelist转载于:https://www.cnblogs.com/diyunpeng/archive/2011/08/30/2159108.html