华为OD机试【最长的完全交替连续方波信号】(java)(200分)

该篇文章介绍了一种算法,用于从给定的输入字符串中找出最长的完全连续交替方波信号。作者通过定义正则表达式和遍历字符串,检查并记录最长符合要求的信号。提示考生在华为OD机试中需注意代码原创性,避免直接使用题库代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、题目描述

最长的完全交替连续方波信号。
输入一串方波信号,求取最长的完全连续交替方波信号,并将其输出,如果有相同长度的交替方波信号,输出任一即可,方波信号高位用1标识,低位用0标识。
说明:

  1. 一个完整的信号一定以0开始然后以0结尾,即010是一个完整的信号,但101,1010,0101不是;
  2. 输入的一串方波信号是由一个或多个完整信号组成;
  3. 两个相邻信号之间可能有0个或多个低位,如0110010,011000010;
  4. 同一个信号中可以有连续的高位,如011101010111100001010,前14为是一个具有连续高位的信号;
  5. 完全连续交替方波是指10交替,如01010是完全连续交替方波,0110不是

2、输入描述

输入信号字符串(长度 >= 3 且 <= 1024): 0010101010110000101000010
注:输入总是合法的,不用考虑异常情况

3、输出描述

输出最长的完全连续交替方波信号串:01010 若不存在完全连续交替方波信号串,输出-1。
用例:

输入
00101010101100001010010

输出
01010

ps:
输入信号串中有三个信号:
0 010101010110(第一个信号段)
00 01010(第二个信号段)
010(第三个信号段)
第一个信号虽然有交替的方波信号段,但出现了11部分的连续高位,不算完全连续交替方波,
在剩下的连续方波信号串中01010最长

温馨提示!!!
华为OD机试考试官方会对考生代码查重。华为od机试因为有题库所以有很大的概率抽到原题。如果碰到了题库中的原题,千万不要直接使用题解中的代码,一定要做些修改,比如代码中的变量名,除此之外,代码的组织结构和逻辑也要进行一些改变,所以在日常的刷题中,要提前编写好属于自己的代码。

4、题解

定义好正则表达式,遍历字符串中的每个字符,若当前字符是0且前面一个字符也是0,则可判定是一个完整信号,对当前信号进行匹配,如果当前匹配到的完全连续交替方波信号长度大于之前的信号长度,则更新最大长度同时更新对应的字符串,具体实现看代码
代码如下

public static void main(String
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬砖小夫子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值