华为OD机试之在字符串中找出连续最长的数字串(含“+-”号)(Java源码)

news/2024/11/30 0:50:31/

在字符串中找出连续最长的数字串(含“±”号)

输入描述

请在一个字符串中找出连续最长的数字串,并返回这个数字串。

如果存在长度相同的连续数字串,返回最后一个。

如果没有符合条件的字符串,返回空字符串””。

注意:
  • 数字串可以由数字”0-9″、小数点”.”、正负号”±”组成,长度包括组成数字串的所有符号。
  • “.”、“±”仅能出现一次,”.”的两边必须是数字,”±”仅能出现在开头且其后必须要有数字。
  • 长度不定,可能含有空格。

输入描述

一串字符

输出描述

连续最长的数字串(合法)
否则 输出 “”

用例

输入1234567890abcd9.+12345.678.9ed
输出+12345.678
说明

解析

  1. 使用正则表达式匹配出数字即可, 这种方式比直接拆分数组简单很多
    这里面有个非常重要的点
    1.1 匹配模式 可以写为 ([±]{0,1}\d+\.{0,1}\d+)
    1.2 当输入的内容为 1234567890abcd9.+12345.678.999999ed-205 时 匹配结果为+12345.678 长度是10位 但是经过核对发现 678.999999 也是10位 且为合法数字。如果只是简单的使用正则去找的话,估计像上述这个字符串匹配不出来。
    1.3 类似于1.2中的这种字符 我逆向进行了匹配来提高匹配情况。我也相信,即使这样做也可能并不能完全找到所有的正确答案。
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Test2 {public static void main(String[] args) {String input = "1234567890abcd9.+12345.678.999999ed-205";String regex = "([+-]{0,1}\\d+\\.{0,1}\\d+)";// ()括号是匹配表达式 []匹配之内的一个即可String res = calcResult(regex, input, true);String reverseRes = calcResult(regex, new StringBuilder(input).reverse().toString(), false);reverseRes = new StringBuilder(reverseRes).reverse().toString();
//		System.out.println(res);
//		System.out.println(reverseRes);if (input.indexOf(res) > input.indexOf(reverseRes)) {System.out.println(res);} else {System.out.println(reverseRes);}}/*** * @param regex 匹配模式* @param input 匹配字符* @param flag  true 正向 false 反向* @return*/public static String calcResult(String regex, String input, boolean flag) {Pattern p = Pattern.compile(regex);Matcher matcher = p.matcher(input);String res = "";while (matcher.find()) {if (flag && matcher.group().length() >= res.length()) {res = matcher.group(); // 正向取后} else if ((!flag) && matcher.group().length() > res.length()) {res = matcher.group(); // 反向取前}}return res;}
}

代码运行示意图
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/247574.html

相关文章

Window搭建IOS App自动化测试环境

平台搭建:tidevice(Windows逆向通信iOS工具)WebDriverAgent(iOS通信服务)facebook-wda(iOS测试框架) macOSXcode:在手机上安装WebDriverAgent的时候需要用到,必须要Xcod…

Barsetto百胜图BAV01办公首选咖啡机

在重要客户到访时,一杯醇香地道的好咖啡,可以给予客户轻松的感觉,同时也能彰显公司的品味。在激烈的谈中,有时候有点枯燥和乏味,来一杯芳香四溢的咖啡,可以提高谈判效率。下午时间,员工疲惫而无精打采的状态,容易影响工作进度,让员工能喝到好的咖啡提高工作效率也是…

Barsetto百胜图自助咖啡机你身边的咖啡大师

在忙碌的都市生活中,惺忪的早晨或倦怠的午后来一杯香浓的咖啡瞬间就能提神醒脑焕发激情。而如何快速又简单的获取到高品质的现磨咖啡,一直是Barsetto百胜图在探索的领域。 在一些公共场景中,通常使用的人数较多,口味的需求也是繁…

百胜图Barsetto自助咖啡机畅享咖啡新生活

无论何时,一杯新鲜的咖啡可以让疲惫的人变得神采奕奕;无论何地,一杯香浓的咖啡可以使一颗漂泊的心变得温暖。满足人们随时随地的咖啡需求,正是Barsetto百胜图BAV02自助咖啡机诞生的意义。 咖啡需求遍布每个地方,Barset…

Barsetto百胜图咖啡机商用咖啡机实力品牌

商用咖啡机在中国市场已被广泛应用,随着80后、90后年轻一代成为职场的主力,随着商用咖啡机需求日益加大,商用咖啡机品牌也开始层出叠现。来自意大利的专业咖啡品牌Barsetto百胜图推出了BAV01商用咖啡机,受到了消费者的一致认可。 如今的都市年轻人,更加懂得追寻品质…

【MySql】数据库的备份与恢复

文章目录 前言备份mysqldump还原source注意事项查看连接情况 前言 对与数据库的备份与恢复该怎么去做呢? Linux下对于文件或目录的备份,直接拷贝一份,留着备用,对于备份,比较简单的做法会就是直接打包拷贝一下&#x…

Barsetto百胜图全自动美式磨豆咖啡机测评

时下,咖啡已经成为越来越多的中国消费者日不能离的必须消费品之一,越来越多的人开始追寻咖啡的口感和品质,大家不愿意再喝速溶咖啡,因为担心速溶咖啡长期喝会对身体健康产生影响,而且速溶咖啡的口味也太差了。因此&…

您好,您的咖啡机需要更新了——Barsetto百胜图BAA122美式全自动磨豆咖啡机评测

随着生活品质的提高,一些咖啡瘾者的追求早就不再是一杯速溶咖啡或者是外卖咖啡的水平线上了,人们的嘴开始变得挑剔,自然新鲜现磨的高品质咖啡更受到追捧和青睐。 那么,想要喝到好咖啡你还在用老式的方式煮咖啡吗?手冲…