当前位置: 首页 > news >正文

每日OJ_牛客_OR59字符串中找出连续最长的数字串_双指针_C++_Java

目录

牛客_OR59字符串中找出连续最长的数字串

题目解析

C++代码1

C++代码2

C++代码3

Java代码


牛客_OR59字符串中找出连续最长的数字串

字符串中找出连续最长的数字串_牛客题霸_牛客网


题目解析

        双指针: 遍历整个字符串,遇到数字的时候,用双指针找出这段连续的数字子串,根据此时的长度更新起始位置和长度。

C++代码1

#include <iostream>
#include <string>
using namespace std;int main()
{string s;cin >> s;int begin = -1, len = 0;for(int i = 0; i < s.size(); i++){if(s[i] >= '0' && s[i] <= '9'){int j = i;while(j < s.size() && s[j] >= '0' && s[j] <= '9'){j++;}if(j - i > len){begin = i;len = j - i;}i = j;}}if(begin == -1){cout << "" << endl;}else{cout << s.substr(begin, len) << endl;}return 0;
}

C++代码2

#include <climits>
#include <iostream>
#include <string>
using namespace std;int main()
{string str;cin >> str;int sz = str.size();int maxLen = 0;int begin = 0, end = 0;for(int left = 0, right = 0; left < sz && right < sz;){while(left < sz && (str[left] > '9' || str[left] < '0')) // 是字母就循环{	// 或的两个没加括号直接数组越界。。。。++left; // 找数字区间的左边}right = left;while(right < sz && str[right] >= '0' && str[right] <= '9') // 是数字就循环{++right; // 找数字区间的右边}int len = right - left;// cout << "len : " << len << " " << left << " " << right << " sz " << sz << endl;if(len > maxLen && left < sz && right <= sz){// string tmp(str.begin() + left, str.begin() + right);// cout << tmp << endl;// cout << left << " " << right << " sz " << sz << endl;end = right;begin = left;maxLen = len;}left = right;}string ret(str.begin() + begin, str.begin() + end);cout << ret << endl;return 0;
}

C++代码3

#include <iostream>
#include <cctype>
using namespace std;int main() 
{string str, ret = "", tmp = "";cin >> str;int n = str.size();for(int i = 0; i <= n; i++){if(isdigit(str[i])){tmp += str[i]; // 进窗口}else{if(tmp.size() > ret.size()){ret = tmp;}else {tmp = "";}}}cout << ret;return 0;
}

Java代码

import java.util.Scanner;
import java.io.*;
public class Main
{public static void main(String[] args) throws Exception{BufferedReader br = new BufferedReader(new InputStreamReader(System.in));char[] s = br.readLine().toCharArray();int begin = 0, len = 0;for(int i = 0; i < s.length; i++){if(s[i] >= '0' && s[i] <= '9'){int j = i;while(j < s.length && s[j] >= '0' && s[j] <= '9'){j++;}if(j - i > len){begin = i;len = j - i;}i = j;}}for(int i = begin; i < begin + len; i++){System.out.print(s[i]);}}
}
http://www.lryc.cn/news/448016.html

相关文章:

  • 虚幻引擎UE5如何云渲染,教程来了
  • 使用Python实现图形学光照和着色的光线追踪算法
  • 通过openAI的Chat Completions API实现一个支持追问的ChatGPT功能集成
  • 8,STM32CubeMX配置SPI工程(读取norflash的ID)
  • 【MATLAB源码-第178期】基于matlab的8PSK调制解调系统频偏估计及补偿算法仿真,对比补偿前后的星座图误码率。
  • AIGC学习笔记—minimind详解+训练+推理
  • 计算机毕业设计 在线项目管理与任务分配系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 小程序用户截屏事件
  • HashMap为什么线程不安全?如何实现线程安全
  • Python爬虫之requests模块(一)
  • 当微服务中调度返回大数据量时如何处理
  • 【项目经验分享】深度学习点云算法毕业设计项目案例定制
  • 【Redis 源码】2项目结构说明
  • RP2040 C SDK GPIO和IRQ 唤醒功能使用
  • @Transactional导致数据库连接数不够
  • python3中的string 和bytes有什么区别
  • C~排序算法
  • 基于github创建个人主页
  • apt update时出现证书相关问题,可以关闭apt验证
  • 进阶数据库系列(十三):PostgreSQL 分区分表
  • 翻译:Recent Event Camera Innovations: A Survey
  • 车载诊断技术:汽车健康的守护者
  • “天翼云息壤杯”高校AI大赛开启:国云的一场“造林”计划
  • 【怎样基于Okhttp3来实现各种各样的远程调用,表单、JSON、文件、文件流等待】
  • excel统计分析(3): 一元线性回归分析
  • 搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(一)-概述
  • ArcGIS Pro高级地图可视化—双变量符号地图
  • rust属性宏
  • 《pyqt+open3d》open3d可视化界面集成到qt中
  • 学习记录:js算法(四十七):相同的树