C++ LeetCode1796字符串中第二大数字
目录
- LeetCode 1796.字符串中第二大的数字
- 方法一:遍历
- 题目分析
- 解题思路
- 复杂度分析
- AC代码
- C++
LeetCode 1796.字符串中第二大的数字
力扣题目链接:leetcode.cn/problems/se…
给你一个混合字符串 s
,请你返回 s
中 第二大 的数字,如果不存在第二大的数字,请你返回 -1
。
混合字符串 由小写英文字母和数字组成。
示例 1:
输入:s = "dfa12321afd"
输出:2
解释:出现在 s 中的数字包括 [1, 2, 3] 。第二大的数字是 2 。
示例 2:
输入:s = "abc1111"
输出:-1
解释:出现在 s 中的数字只包含 [1] 。没有第二大的数字。
提示:
1 <= s.length <= 500
s
只包含小写英文字母和(或)数字。
方法一:遍历
题目分析
题目中说的“第二大”数字,到底什么是第二大?英文原文是“Second largest”
也就是说,是从大到小第二个数,不是从小到大第二个数。
样例中“123”,不论是从小到大还是从大到小都是“2”,不如把样例换成“1234”,这样答案是“3”,就一目了然了。
解题思路
首先开辟一个大小为“10”的布尔数组,初始值为false
接着遍历字符串,如果字符串的某个字符是数字,那么就将对应的那个布尔值标记为true
接着,用一个变量foundFirst
来记录是否已经找到了最大值,初始值为false
从9
到0
遍历布尔数组,如果遇到某个值为true
,就看foundFirst
是否已经为true
- 如果为
true
,就返回当前的对应元素 - 否则,将
foundFirst
标记为true
若遍历结束后仍未找到“第二大数”,那么就返回-1
复杂度分析
- 时间复杂度O(len(s))
- 空间复杂度O(C),这里C=10,也可以理解为O(1)
AC代码
C++
class Solution { public: int secondHighest(string& s) { bool bin[10] = {false}; for (char c : s) { if (c >= '0' && c <= '9') bin[c - '0'] = true; } bool foundFirst = false; for (int i = 9; i >= 0; i--) { if (bin[i]) { if (foundFirst) { return i; } else { foundFirst = true; } } } return -1; } };
以上就是C++ LeetCode1796字符串中第二大数字的详细内容,更多关于C++ 字符串第二大数字示例的资料请关注我们其它相关文章!
相关推荐
-
C++ LeetCode1775通过最少操作次数使数组和相等
目录 LeetCode1775.通过最少操作次数使数组的和相等 方法一:贪心 + 计数 AC代码 C++ LeetCode1775.通过最少操作次数使数组的和相等 力扣题目链接:leetcode.cn/problems/eq… 给你两个长度可能不等的整数数组 nums1 和 nums2 .两个数组中的所有值都在 1 到 6 之间(包含 1 和 6). 每次操作中,你可以选择 任意 数组中的任意一个整数,将它变成 1 到 6 之间 任意 的值(包含 1 和 6). 请你返回使 nums1 中所有数
-
C++ LeetCode1780判断数字是否可以表示成三的幂的和
目录 LeetCode 1780.判断一个数字是否可以表示成三的幂的和 方法一:二进制枚举 题目分析 解题思路 复杂度分析 AC代码 C++ 方法二:进制转换 AC代码 C++ LeetCode 1780.判断一个数字是否可以表示成三的幂的和 力扣题目链接:leetcode.cn/problems/ch… 给你一个整数 n ,如果你可以将 n 表示成若干个不同的三的幂之和,请你返回 true ,否则请返回 false . 对于一个整数 y ,如果存在整数 x 满足 y == 3x ,我们称这个整
-
C++ LeetCode543题解二叉树直径
目录 LeetCode 543.二叉树的直径 方法一:深度优先搜索求二叉树的深度 AC代码 C++ LeetCode 543.二叉树的直径 力扣题目链接:leetcode.cn/problems/di… 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过也可能不穿过根结点. 示例 :给定二叉树 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]. 注意:两结点之间的路径长度是以它们之间边的数目表示. 方法一:深度优
-
C++ LeetCode542矩阵示例详解
目录 LeetCode 542.01 矩阵 方法一:广度优先搜索 AC代码 C++ LeetCode 542.01 矩阵 力扣题目链接:leetcode.cn/problems/01… 给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离. 两个相邻元素间的距离为 1 . 示例 1: 输入:mat = [[0,0,0],[0,1,0],[0,0,0]]输出:[[0,0,0],[0,1,0],[0,0,0]] 示例
-
C++ LeetCode1805字符串不同整数数目
目录 LeetCode 1805.字符串中不同整数的数目 方法一:遍历拆分 AC代码 C++ LeetCode 1805.字符串中不同整数的数目 力扣题目链接:leetcode.cn/problems/nu… 给你一个字符串 word ,该字符串由数字和小写英文字母组成. 请你用空格替换每个不是数字的字符.例如,"a123bc34d8ef34" 将会变成 " 123 34 8 34" .注意,剩下的这些整数为(相邻彼此至少有一个空格隔开):"123&q
-
C++ LeetCode1812判断国际象棋棋盘格子颜色
目录 1812.判断国际象棋棋盘中一个格子的颜色 方法一:取模 AC代码 C++ 方法二:基于方法一的小改进 AC代码 C++ 1812.判断国际象棋棋盘中一个格子的颜色 力扣题目链接:leetcode.cn/problems/de… 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标.下图是国际象棋棋盘示意图. 如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false . 给定坐标一定代表国际象棋棋盘上一个存在的格子.坐标第一个字符是字
-
C++ LeetCode300最长递增子序列
目录 LeetCode 300.最长递增子序列 方法一:动态规划 AC代码 C++ LeetCode 300.最长递增子序列 力扣题目链接:leetcode.cn/problems/lo… 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度. 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序.例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列. 示例 1: 输入:nums = [10,9,2,5,3,7,101,18]输出:4
-
C++ LeetCode1796字符串中第二大数字
目录 LeetCode 1796.字符串中第二大的数字 方法一:遍历 题目分析 解题思路 复杂度分析 AC代码 C++ LeetCode 1796.字符串中第二大的数字 力扣题目链接:leetcode.cn/problems/se… 给你一个混合字符串 s ,请你返回 s 中 第二大 的数字,如果不存在第二大的数字,请你返回 -1 . 混合字符串 由小写英文字母和数字组成. 示例 1: 输入:s = "dfa12321afd"输出:2解释:出现在 s 中的数字包括 [1, 2, 3]
-
Java实现从字符串中找出数字字符串的方法小结
本文实例总结了Java实现从字符串中找出数字字符串的方法.分享给大家供大家参考,具体如下: int start = 0; String numStr = null; for (int j = 0; j < valuesStr.length() - 1; j++) { if (Character.isDigit(valuesStr.charAt(j)) == false && Character.isDigit(valuesStr.charAt(j + 1)) == true) { s
-
JAVA 统计字符串中中文,英文,数字,空格,特殊字符的个数
引言 可以根据各种字符在Unicode字符编码表中的区间来进行判断,如数字为'0'~'9'之间,英文字母为'a'~'z'或'A'~'Z'等,Java判断一个字符串是否有中文是利用Unicode编码来判断,因为中文的编码区间为:0x4e00--0x9fbb, 但通用区间来判断中文也不非常精确,因为有些中文的标点符号利用区间判断会得到错误的结果.所以通过Character.UnicodeBlock来进行判断.代码如下: package cn.csrc.base.count; public class
-
python 返回一个列表中第二大的数方法
如下所示: # 返回一个列表中第二大的数 def second(ln): max = 0 s = {} for i in range(len(ln)): flag = 0 for j in range(len(ln)): if ln[i] >= ln[j] and i != j: flag = flag + 1 s[i] = flag if flag > max: max = flag print(s) for i in s: if s[i] == max - 1: break print(l
-
Python 正则表达式匹配数字及字符串中的纯数字
Python 正则表达式匹配数字 电话号码:\d{3}-\d{8}|\d{4}-\d{7} QQ号:[1-9][0-9]{4,} 中国邮政编码:[1-9]\d{5}(?!\d) 身份证:\d{15}|\d{18} ip地址:\d+\.\d+\.\d+\.\d+ [1-9]\d* 正整数 -[1-9]\d* 负整数 -?[1-9]\d* 整数 [1-9]\d*|0 非负整数 -[1-9]\d*|0 非正整数 [1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 正浮点数 -([1-
-
Python字符串中如何去除数字之间的逗号
目录 字符串去除数字间的逗号 删除字符串中的符号 字符串去除数字间的逗号 在西文数字的表示中,很多格式是类似这样:123,456,789. 如果得到这样的一个字符串,直接用int转换成整型肯定报错,那么在格式转换前需要先去除数字之间的逗号 . 如果字符串只有数字和“,”,那么可以用一个replace替换. 例如: >>> n = '123,456,789' >>> n1 = n.replace(',','') >>> print n1 12345678
-
php+正则将字符串中的字母数字和中文分割
如:$str="php如何将字 符串中322的字母数字sf f45d和中文_分割?";按数字或字母分割. 复制代码 代码如下: $str = "php如何将字 符串中322的字母数字Asf f45d和中文_分割?";$arr = preg_split("/([a-zA-Z0-9]+)/", $str, 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); print_r($arr); 结果 复制
-
sql 判断字符串中是否包含数字和字母的方法
判断是否含有字母 select PATINDEX('%[A-Za-z]%', 'ads23432')=0 (如果存在字母,结果>1) 判断是否含有数字 PATINDEX('%[0-9]%', '234sdf')=0 (如果存在数字,结果>1)
-
Python网络安全格式字符串漏洞任意地址覆盖大数字详解
格式化字符串漏洞覆盖大数字时,如果选择一次性输出大数字个字节来进行覆盖,会很久很久,或者直接报错中断,所以来搞个攻防世界高手区的题目来总结一下 pwn高手区,实时数据监测这道题,就是格式化字符串漏洞覆盖大数字 题目运行时会直接告诉你key的地址,我们只需要利用imagemagic中的printf利用格式化字符串漏洞来覆盖就行了,但就像刚才说的,直接覆盖时间太久了而且会报错,所以可以想想别的办法 如果我们想覆盖key为0x02223322,那么根据小端存储,在内存中就是\x22 \x33 \x22
-
详解Python3中字符串中的数字提取方法
逛到一个有意思的博客在里面看到一篇关于ValueError: invalid literal for int() with base 10错误的解析,针对这个错误,博主已经给出解决办法,使用的是re.sub 方法 totalCount = '100abc' totalCount = re.sub("\D", "", totalCount) 但是没有说明什么含义,于是去查了其他的资料,做一下记录: 在Python3.5.2 官方文档re模块中sub函数的定义是: re
随机推荐
- 用vb和vbs 破解flashxp的密码的代码
- ASP.NET 前后台调用方法
- javascript 汉字转拼音实现代码
- CodeIgniter分页类pagination使用方法示例
- 结合asp和存储过程做的搜索程序
- 关于C#中排序函数的总结
- c语言中return与exit的区别浅析
- JavaScript高级程序设计 学习笔记 js高级技巧
- MySQL 添加、修改、删除表的列及约束等表的定义
- 教你3分钟了解Android 简易时间轴的实现方法
- JS字符串按逗号和回车分隔的方法
- 基于bootstrap的文件上传控件bootstrap fileinput
- 基于json的jquery地区联动效果代码
- Android巧用ActionBar实现下拉式导航
- MySql修改密码后phpMyAdmin无法登陆的解决方法
- win2003 sp2 安装iis提示无法复制文件解决办法[已测]
- Qt实现FTP的上传和下载的实例代码
- Java图片中显示当前时间的方法 原创
- .net输出重写压缩页面文件的小例子
- Android语音识别技术详解及实例代码