《牛客网》——华为机试在线训练——找最长连续数字串

华为笔试题——Python 最长数字字符串 题目:给定一个字符串,输出字符串中最长的数字串,并输出该数字串的长度。 题目描述: 在一个字符串中找出连续最长的数字串,并把这个串的长度返回; PS:(1)若存在长度相同的连续数字串,返回最后一个连续数字串。 (2)若没有数字,则返回空字符串(“”) 输入描述: 一个字符串 输出描述: 输出最长的数字串,输出最长数字串个数(中间用逗号隔开) -----------... 阅读详情

例如输入:abcd123.4567.890.123

输出:123.4567.890

“.”可以作为连接符连接两个数字,但是要求"."两边必须都是数字。

面试时遇到的题,因为忽略了对‘0’的处理,所以挂了。

#include<iostream>
#include<stdio.h>

#define MAX_SIZE 0x500

bool IsDotCorrect(char*szInput, int i, int nLastCmpPos, int nLen)//Check if it's a correct dot.
{
    if (nLastCmpPos < 0)
    {
        return false;
    }

    if ((i - 1 >= 0 && i + 1 <= nLen - 1 && (szInput[i - 1] >= '0' && szInput[i - 1] <= '9') && (szInput[i + 1] >= '0' && szInput[i + 1] <= '9')) && ((szInput[i + 1] - szInput[nLastCmpPos]) == 1 && szInput[nLastCmpPos] != '0'))
    {
        return true;
    }

    return false;
}
int main()
{
    char szInput[MAX_SIZE] = { 0 };
    gets_s(szInput, MAX_SIZE);

    int nLen = strlen(szInput);
    int nCount = 0;
    int nCountPos = 0;
    bool bIsCount = false;
    int nLastCmpPos = -1;
    int nCountBak = 0;
    int nCountPosBak = 0;

    for (int i = 0; i < nLen; i++)
    {
        if (!bIsCount)//Is Count Start
        {
            nCountPos = i;
        }

        if ((szInput[i] >= '0' && szInput[i] <= '9') || (szInput[i] == '.' && IsDotCorrect(szInput, i, nLastCmpPos, nLen)))//correct char
        {
            bIsCount = true;
            if (szInput[i] == '.')//correct dot ++
            {
                nCount++;
            }
            else
            {
                if (i - 1 >= 0)//if it's first correct char, no need to compare
                {
                    if (nCount == 0) //first num in this loop ,no need to compare
                    {
                        nCount++;
                    }
                    else
                    {
                        if (((szInput[i] - szInput[nLastCmpPos]) == 1) && szInput[nLastCmpPos] != '0')
                        {
                            nCount++;
                        }
                        else if (szInput[i] == '0' && szInput[nLastCmpPos] == '9')
                        {
                            nCount++;
                        }
                        else
                        {
                            bIsCount = false;
                        }

                        /*if (szInput[i] == '0' && szInput[nLastCmpPos] == '9')
                        {
                        nCount++;
                        }*/
                        
                    }
                }
                else//first num ++
                {
                    nCount++;
                }
                nLastCmpPos = i;
            }

            if (!bIsCount)//Count start
            {
                bIsCount = false;//Count again

                if (nCountBak <= nCount)
                {
                    nCountBak = nCount;
                    nCountPosBak = nCountPos;
                }

                nCountPos = 0;
                nCount = 0;
                nLastCmpPos = 0;
            }
        }
        else//incorrect char
        {
            bIsCount = false;//Count again

            if (nCountBak <= nCount)
            {
                nCountBak = nCount;
                nCountPosBak = nCountPos;
            }

            nCountPos = 0;
            nCount = 0;
            nLastCmpPos = 0;
        }
    }

    if (nCountBak <= nCount)
    {
        nCountBak = nCount;
        nCountPosBak = nCountPos;
    }
    //abcd123.4567.890.123
    //b12.34.12
    for (int i = 0; i < nCountBak; i++)
    {
        printf("%c", *(szInput + nCountPosBak + i));
    }
    printf("\n");
    system("pause");

}
【华为OJ】【在字符串中找出连续最长的数字串】 题目描述 请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串; 注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串“1234”的长度就小于数字串“1359055”,如果没有数字,则返回空字符串(“”)而不是NULL! 样例输入 abcd12345ed125ss123058789 abcd12345ss54761 ... 阅读详情

相关推荐

【华为机试真题 JAVA】最长连续的数字串-200

请在一个字符串中找连续最长的数字串,并返回这个数字串。 如果存在长度相同的连续的数字串,则返回最后一个。如果没有符合条件的字符串,则返回空字符串“”。

weixin_52894047的博客 518

就因为这三个知识点,我彻底学废了”正则表达式“

前言 曾经我一度对正则表达式有种恐惧和厌恶感,为啥?因为总感觉这玩意很难,很枯燥,看到别人写出贼牛逼的正则,我想啥时候我能像他们一样优秀。直到我看到了这三个知识点。。。 只需要花10分钟时间,你可以收获 正则表达式中的位置匹配原理与知识 正则表达式中的字符串匹配原理与知识 正则表达式中的括号的妙用 14个常见正则表达式解析帮助理解知识点 相信我,看完这篇文章,对于工作中90%以上的正则问题你都能找到解决思路和方案。 相信我,看完这篇文章,对于工作中90%以上的正则问题你都能找到解决思路和方

SharingOfficer的博客 1674

上下文学习的统计物理视角:能量景观与泛化能力的深度解析

本文从统计物理视角探讨了上下文学习(ICL)的机制,提出了能量景观理论框架。主要内容包括: 理论框架:将ICL建模为能量景观的动态调整过程,其中上下文示例作为能量扰动器,通过修改模型内部的高维能量地形来引导预测。 关键发现: 基础能量函数E₀(x)反映预训练数据统计规律 上下文示例通过添加扰动项ΔE(x)重塑能量景观 景观拓扑结构(如宽谷底对应良好泛化能力)决定模型表现 实验验证:提供了可复现的Python代码实现,通过可视化2D/3D能量景观展示上下文示例如何改变模型行为模式。 核心洞见:ICL的泛化能力

博客 748

javascript 手机号间隔显示 123 4567 8910

// 手机号分隔显示 let tel = this.data.tel_value // 原始手机号 let len = tel_value.length // 原始手机号的长度 let mobile = '' for (var i = 0; i < len; i++) { if (i =...

weixin_30900589的博客 380

最长连续子序列

已支持(Java & JS & Python & C & C++),实现:双指针 || 前缀和

优快云 6216

【牛客网华为机试】HJ92 在字符串中找出连续最长的数字串

题目 描述 输入一个字符串,返回其最长的数字子串,以及其长度。若有多个最长的数字子串,则将它们全部输出(按原字符串的相对位置) 本题含有多组样例输入。 输入描述: 输入一个字符串。1<=len(字符串)<=200 输出描述: 输出字符串中最长的数字字符串和它的长度,中间用逗号间隔。如果有相同长度的串,则要一块儿输出(中间不要输出空格)。 示例1 输入: abcd12345ed125ss123058789 a8a72a6a5yy98y65ee1r2 复制输出: 1230

202xxx的博客 404

mysql 123 456_如何通过一个被分割的值查询,如在vb.net的mysql中的123-456-789?

我的问题是,当我通过一个通常的ID进行查询时,如没有分段数字= 1234567890,它很好地工作。但我需要通过某种分段值或ID查询= 123-4567-890,当我尝试123-4567-890这个ID它不查询任何在MySQL中,但在数据库中这123-4567-890 ID存在。那么在VB.NET中,通过mysql中的分段值来搜索可能的解决方案是什么?以下是我在vb中尝试的代码公共小学生()tex...

weixin_36400833的博客 262

Openwifi 开源项目解读(一)

Openwifi wifi 80211 无线网卡 基带 FPGA linux 驱动 开源

2万+

华为机试HJ92:在字符串中找出连续最长的数字串

C++实现——在字符串中找出连续最长的数字串

翟天保的博客 1万+

贝叶斯校准在计算机模型不确定性分析中的实践指南

本文深入探讨了贝叶斯校准在计算机模型不确定性分析中的核心原理与实践方法。通过将模型从“黑箱”转变为“透明箱”,该方法系统量化了参数不确定性、模型结构缺陷及观测误差。文章重点阐释了如何利用高斯过程作为代理模型和模型不足函数,构建完整的贝叶斯校准框架,并提供了从数据准备、模型训练到MCMC推断及不确定性分析的实战指南,最终实现更可靠的预测与决策支持。

weixin_29088655的博客 292

告别JTAG!用Artix-7和SPI Flash实现FPGA远程升级的保姆级教程

本文详细介绍了如何利用Artix-7 FPGA和SPI Flash实现FPGA远程升级(OTA)的完整方案。通过硬件连接、Vivado工程配置和STM32模拟更新等步骤,帮助开发者告别传统的JTAG烧录方式,实现高效、安全的远程固件更新,特别适用于嵌入式系统开发中的现场维护场景。

weixin_33964987的博客 364

华为机试在线训练-牛客网(38)在字符串中找出连续最长的数字串

题目描述 样例输出 输出123058789,函数返回值9 输出54761,函数返回值5   接口说明 函数原型:    unsignedint Continumax(char** pOutputstr,  char* intputstr) 输入参数:    char* intputstr  输入字符串; 输出参数:    char** 

Ctrlturtle的博客 1767

汇川伺服Modbus-RTU通讯实战:从帧结构解析到西门子PLC配置

本文详细解析了汇川伺服与西门子PLC通过Modbus-RTU协议进行通讯的实战步骤,包括帧结构解析、硬件连接、参数设置及PLC程序配置。通过具体案例和常见问题排查指南,帮助工程师快速掌握工业自动化中的通讯技术,提升设备调试效率。

weixin_33670713的博客 453

华为OD Python机试满分实战指南:OJ环境适配与工程化编码

华为OD机试B卷并非单纯考察算法能力,而是一场面向真实生产环境的Python工程化编码能力测试。其核心在于理解在线判题系统(OJ)的底层运行机制——包括输入流单次读取、内存硬限制256MB、Python 3.9.16定制环境、禁止动态执行及递归深度锁定等隐性约束。在此前提下,‘算法最优’常让位于‘执行稳定’:例如放弃摩尔投票法改用字典统计,规避输入缓冲区截断风险而强制使用sys.stdin.readline(),或为避免哈希顺序不确定性改用数组索引替代字典遍历。这些实践直指华为OD高频考点:Python O

weixin_34194359的博客 299

Petalinux实战:3种方法调试AXI UART Lite设备(含minicom/screen/直接寄存器操作对比)

本文详细介绍了在Zynq平台上使用Petalinux调试AXI UART Lite设备的三种实用方法:用户空间工具(minicom/screen)、应用层程序(termios配置)和底层寄存器直接操作。文章对比了各方法的优缺点与适用场景,并重点解析了设备树配置、驱动加载等关键环节,帮助开发者快速定位并解决串口通信中的常见问题。

weixin_29190169的博客 433

【异常】Claude Code CLI 模型调用异常 There‘s an issue with the selected model (claude-sonnet-4-6). It may not

摘要: Claude Code CLI v2.1.45版本存在适配缺陷,导致调用claude-sonnet-4-6模型时触发"模型不存在"的误报错误(跨Windows/Linux平台)。该问题为版本回归类异常,非模型或账户权限问题。解决方案包括:1) 校验模型名称格式为claude-sonnet-4-6;2) 降级至v2.1.34或等待官方修复;3) 检查API配置有效性;4) 通过CLI交互界面手动选择模型;5) 临时切换同系列可用模型。官方已确认该bug并将发布修复版本。

奶爸的编程之路,也就一周冷个三天 6385

java求出最长平台的长度,华为机试题目-多最长子串筛选

问题描述和解决方案```javaimport java.util.Scanner;/*** 最长平台问题-衍生版* * 问题描述:给定一个字符串,有字符连续出现,* 请寻找这些连续字符串中最长的字符串,如果最长的串有多个,* 请输出ascii最小的;* 解决方案:先按照“最长平台”模型,计算出最大长度,* 然后再次遍历字符串,寻找asc码值最大的的子串* *...

weixin_39875516的博客 302

车间数据孤岛终于破了!C#上位机+MQTT打通产线与MES,数据延迟从小时级降到秒级

本文针对工业上位机开发中常见的车间数据与企业管理系统(MES)割裂问题,提出基于C#和MQTT协议的完整解决方案。通过EMQX MQTT Broker实现数据实时双向传输,将质量追溯时间从2小时缩短至10秒,生产计划自动下发,实现秒级数据延迟。方案采用分层解耦架构,支持设备更换和系统升级,核心优势包括低延迟、高可靠性和易扩展性。文章详细介绍了MQTT协议选型理由、整体架构设计、技术选型(EMQX Broker和MqttNet客户端),并提供了C#实现代码和部署流程。该方案已在实际产线验证,可有效解决&quo

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 480

华为-在字符串中找出连续最长是数字串

题目描述: 输入描述: 输入一个字符串。 输出描述: 输出字符串中最长的数字字符串和它的长度,中间用逗号间隔。如果有相同长度的串,则要一块儿输出(中间不间隔),但是长度还是一串的长度,与数字字符串间用逗号间隔。 解题思路: 当遇到数字时,统计连续数字的个数,若大于当前统计到的最大长度,则保存到数组,数组的最后端保存的肯定是最长的。再判断一下倒数第一和倒数第二的长度是否相同,若相同,则按照题述要求输出。 #include<iostream> #include<string> #inc

qq_38977019的博客 381

Open3D (C++) 使用点云创建数字高程模型DEM

Open3D (C++) 使用点云创建数字高程模型DEM

点云侠的博客 1392

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

华为2018秋招编程题1:求连续最长数字串及长度

在字符串中找出连续最长的数字串 输入内容: 输入字符串 输出内容: 连续最长的数字串,及长度。(规则:如果输入字符串是空或者没有数字串,也应该返回空字符串“ ”;若有两最长的数字串,返回最后一个) 例如:输入“8789ajdsc8456511123”,输出应该为8456511123,10 输入数据: 8789ajdsc8456511123 输出的数据为: 8...

Chen Rong的博客 743

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

华为机试:求解连续数列

【代码】华为机试:求解连续数列。

OceanStar的博客 342

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

华为机试题92-在字符串中找出连续最长的数字串

描述 输入一个字符串,返回其最长的数字子串,以及其长度。若有多个最长的数字子串,则将它们全部输出(按原字符串的相对位置) 本题含有多组样例输入。 数据范围:字符串长度 1≤n≤200 , 保证每组输入都至少含有一个数字 输入描述: 输入一个字符串。1<=len(字符串)<=200 输出描述: 输出字符串中最长的数字字符串和它的长度,中间用逗号间隔。如果有相同长度的串,则要一块儿输出(中间不要输出空格)。 示例1 输入: abcd12345ed125ss123058789

qq_47307864的博客 823

华为机试题:HJ92 在字符串中找出连续最长的数字串(python)

在字符串中找出连续最长的数字串(python)

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 1376

华为机试题—在字符串中找出连续最长的数字串 c++

/* 题目:在字符串中找出连续最长的数字串,并把这个串的长度返回函数原型: unsignedint Continumax(char** pOutputstr, char* intputstr)输入参数: char* intputstr 输入字符串;输出参数: char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0, 应该返回空字符串;如果输

小李的专栏 1258

华为机试练习题-在字符串中找出连续最长的数字串

牛客网链接: https://www.nowcoder.com/questionTerminal/bd891093881d4ddf9e56e7cc8416562d 题目描述: #include<iostream> #include<string> using namespace std; int main() { string str; ...

曾经沧海难为水,除却巫山不是云 573
上一篇: 启动vue项目报错 these dependencies were not found:create in ./src/router/modules/md.js
下一篇: npm启动项目npm run serve时报错Error: Cannot find module ‘webpack‘ 问题解决办法
qq_34412985
博客等级 码龄11年 143粉丝 983原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值