例如:abijkabcd 则结果返回 abcd 长度为4。注意是一个字符串,连续的“字符串”而不是 数字串。
4条回答
关注 public void calMaxLength() { String input = "adc"; int max=0; int temp=1; /** * 对整个string进行遍历 */ for(int i=1;i<input.length();i++){ char pre = input.charAt(i-1); char now = input.charAt(i); if(now-pre==1){//如果是连续字符串,长度加一 temp++; }else{//如果不是连续的字符串,对之前连续的字符串长度进行判断,看是不是目前最长的,如果是则保存 //并且长度计算长度重新计为1 max=(max>temp?max:temp); temp=1; } } //因为上面的程序没有对最后一次连续长度进行比较,所以在这里额外比较一次 max=(max>temp?max:temp); //题目要求没有连续的输出0,即没有1这个说法,所以这里进行了判断 System.out.println((max==1?0:max)); }
上面的方法可以解决楼主的问题,而且时间复杂度是O(n),应该是最优的解法了。
手打代码&注释,思路已经在注释中说明了。望采纳,如果有不合适可以继续交流
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器