
[每日一题] 5. 字符串中找出连续最长的数字串(字符串、模拟、贪心)
需要读取一个字符串,并从中找出连续最长的数字串。 连续的定义是指在字符串中,数字字符连续出现的序列。 例如,字符串“abc123456def789”中,最长数字串是“456”和“789”中的“789”。 初始化两个变量: 遍历字符串中的每个字符: 遍历结束后,由于最后一次可能未遇到非数字字符,所以再次检查 最终,输出 使用 遍历中每遇到一个数字字符就直接添加到 遇到非数字字符时,进行比较并更新 遍历结束后再次检查,以确保最后一个数字串是否是最长的。 输入:"abcd12345ed125ss123456789",输出:"123456789" 输入:"123abcd",输出:"123" 输入:"abc456def789",输出:"789" 输入:"000",输出:"000" 输入:"a0b",输出:"0"
发布日期:2021-05-12 23:13:47
浏览次数:18
分类:精选文章
本文共 1389 字,大约阅读时间需要 4 分钟。
读取字符串中最长的连续数字串
在处理字符串问题时,遇到需要找出最长连续数字串的情况,我们需要找到一种有效且高效的方法。以下是解决这个问题的分步思考过程:
一、问题分析
二、解决思路
currentDigits
记录当前遇到的连续数字串,maxDigits
记录最长的数字串。- 如果字符是数字,将其添加到
currentDigits
中。 - 否则,检查
currentDigits
是否比maxDigits
长,如果是,则更新maxDigits
。
currentDigits
和maxDigits
。maxDigits
的值。三、解决代码
#include#include using namespace std;int main() { string s; cin >> s; string currentDigits; string maxDigits = ""; for (int i = 0; i < s.size(); ++i) { if (isdigit(s[i])) { currentDigits += s[i]; } else { if (currentDigits.size() > maxDigits.size()) { maxDigits = currentDigits; } else { currentDigits.clear(); } } } // 处理循环结束后,currentDigits可能存在更长的数字串 if (currentDigits.size() > maxDigits.size()) { maxDigits = currentDigits; } cout << maxDigits << endl; return 0;}
四、技术细节
isdigit
函数判断字符是否为数字。currentDigits
,避免了每次都需要进行复杂判断。maxDigits
,然后清空currentDigits
。五、测试用例
通过这段代码,可以有效地找出任意字符串中最长的连续数字串,处理过程高效且逻辑清晰。
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年05月02日 15时03分48秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Mac下安装PEAR
2025-04-11
mac下安装配置nginx
2025-04-11
Mac下忘记MySQL密码可以这样做!
2025-04-11
Mac下配置多个SSH-Key (gitLab)
2025-04-11
mac地址随机变化的解决方法(安卓手机通用)不用ROOT
2025-04-11
Mac安装Maven
2025-04-11
Mac实现远程服务器登录管理
2025-04-11
mac常用命令
2025-04-11
Mac打包dmg文件(更换背景图)
2025-04-11
mac更新后 homestead 无法使用
2025-04-11
mac环境安装docker
2025-04-11
MAC生成公钥私钥、PKCS1 转 PKCS8
2025-04-11
Mac电脑怎么读写不了移动硬盘?解决苹果电脑不能读写移动硬盘问题
2025-04-11
Mac电脑生成git的公私钥(拉取代码更便捷)
2025-04-11
MAC解决端口号被占用
2025-04-11
mac配置自定义域名
2025-04-11
magento1给customer添加自定义属性
2025-04-11
Magic Leap是快出产品的节奏,已开放内容开发者注册通道
2025-04-11