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

华为OD E卷(100分)39-最长子字符串的长度(二)

 前言

        工作了十几年,从普通的研发工程师一路成长为研发经理、研发总监。临近40岁,本想辞职后换一个相对稳定的工作环境一直干到老, 没想到离职后三个多月了还没找到工作,愁肠百结。为了让自己有点事情做,也算提高一下自己的编程能力,无聊之余打算用一些大厂的编程题练练手。希望通过这些分享能够帮到一些人,也希望能和看到此文的大神们沟通交流,提升自己,更希望在此期间能够找到一份理想的工作。

题目描述

        给你一个字符串 s,字符串s首尾相连成一个环形 ,请你在环中找出'l'、'o'、'x' 字符都恰好出现了偶数次最长子字符串的长度。

输入

        输入是一串小写的字母组成的字符串s。

  1. 1 <= s.length <= 5 x 10^5
  2. s 只包含小写英文字母。

输出

        输出是一个整数

示例 

示例1

输入
alolobo
输出

6

说明

最长子字符串之一是 "alolob",它包含 'l','o'各 2 个,以及 0 个 'x' 。

示例2

输入
looxdolx
输出

7

说明

最长子字符串是 "oxdolxl",由于是首尾连接在一起的,所以最后一个 'x' 和开头的 'l'是连接在一起的,此字符串包含 2 个'o' 。

示例3

输入
bcbcbc
输出

6

说明

这个示例中,字符串 "bcbcbc" 本身就是最长的,因为 'o' 都出现了 0 次。

解题思路

        循环,每一次将第一个字符放到最后组成一个新的字符串进行查找

题解

Java实现

package huawei.e100;

import java.util.Scanner;

/**
* @author arnold
* @date 2024年12月24日
* 最长子字符串的长度(二)
*/
public class T39_ZuiChangZiChuan {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			String str = sc.nextLine();
			int maxLen = run(str);
			System.out.println(maxLen);
		}

	}
	
	// 循环,每一次将第一个字符放到最后组成一个新的字符串进行查找
	static int run(String str) {
		int maxLen = getMaxLen(str);
		for (int i = 1; i < str.length(); i++) {
			str = str.substring(1) + str.substring(0,1);
			int len = getMaxLen(str);
			maxLen = Math.max(maxLen, len);
		}
		return maxLen;
	}
	
	static int getMaxLen(String s) {
		int maxLen = 0;
		int l_num = 0;
		int o_num = 0;
		int x_num = 0;
		
		for (int i = 0; i < s.length(); i++) {
			if(s.charAt(i) == 'l') {
				l_num++;
			} else if (s.charAt(i) == 'o') {
				o_num++;
			} else if (s.charAt(i) == 'x') {
				x_num++;
			}
			
			if(l_num % 2 == 0 && o_num % 2 == 0 && x_num % 2 == 0) {
				maxLen = Math.max(maxLen, i+1);
			}
		}
		
		return maxLen;
	}

}


http://www.kler.cn/a/454052.html

相关文章:

  • 嵌入式单片机中Flash存储器控制与实现
  • 【CSS in Depth 2 精译_094】16.2:CSS 变换在动效中的应用(下)——导航菜单的文本标签“飞入”特效与交错渲染效果的实现
  • Unity中UGUI的Button动态绑定引用问题
  • 【路径规划】原理及实现
  • LLM漫谈(八)| OpenAI 12天直播集锦
  • es快速扫描
  • SpringBoot + HttpSession 自定义生成sessionId
  • 数据中台从centos升级为国产操作系统后,资源增加字段时,提交报500错误
  • 网页中字体图标Fontawesome的使用
  • linux-22 目录管理(二)rmdir命令,删除目录
  • 白牛招投标数据库介绍
  • 什么是Web应用防火墙,简称:WAF(Web Application Firewall)
  • 前端请求跨域问题
  • Docker部署GitLab服务器
  • UDP的报文结构和特点
  • leetcode1110删点成林
  • MATLAB中UWB工具箱的使用建议
  • 解决pycharm无法识别miniconda
  • AI Weekly『12月16-22日』:OpenAI公布o3,谷歌发布首个推理模型,GitHub Copilot免费版上线!
  • VisualRules华为应用场景介绍
  • jquery固定折叠侧边栏菜单插件
  • Oracle一些基础知识
  • 【C++ 基础】从C到C++有哪些变化
  • hadoop中hive本地模式安装mysql源不成功
  • 【漫话机器学习系列】022.微积分中的链式求导法则(chain rule of Calculus)
  • 循环神经网络(RNN)入门指南:从原理到实践