华为OD机试之连续字母长度(Java源码)_华为机考连续字母长度java

Docker步步实践

目录文档:

①Docker简介

②基本概念

③安装Docker

④使用镜像:

⑤操作容器:

⑥访问仓库:

⑦数据管理:

⑧使用网络:

⑨高级网络配置:

⑩安全:

⑪底层实现:

⑫其他项目:

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

输出连续出现次数第k多的字母的次数。

输入输出说明
AAAAHHHBBCDHHHH32同一字母连续出现的最多的是A和H,四次;第二多的是H,3次,但是H已经存在4个连续的,故不考虑;下个最长子串是BB,所以最终答案应该输出2
AABAAA 21同一字母连续出现的最多的是A,三次;第二多的还是A,两次,但A已经存在最大连续次数三次,故不考虑;下个最长子串是B,所以输出1。

源码与解析
解析:

可以考虑将字符例如A与其出现的次数写入Map对象 ,A下次出现的次数如果比上次多,就替换,否则就不管 例如 AABAAA=》 {A:2}=>{A:2,B:1}=>{A:3,B:1}
将集合还原为字符串转换到List中 [AAA,B]
List按字符的长度来排序(大到小) 输出顺序对应的位置的字符即可

示例代码:

import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class T16 {
	public static void main(String[] args) {
		String input = "AAAAHHHBBCDHHHH";
		int index = 1;
		String temStr = getSameCharacter(input);
		Map<Character, Integer> map = new HashMap<Character, Integer>();
		map.put(temStr.charAt(0), temStr.length());
		while (input.replaceFirst(temStr, "").length() > 0) {
			input = input.replaceFirst(temStr, "");
			temStr = getSameCharacter(input);
			if (map.get(temStr.charAt(0)) == null) {
				map.put(temStr.charAt(0), temStr.length());
				continue;
			}
			// 原来的小于当前 否则不换
			if (map.get(temStr.charAt(0)) < temStr.length()) {
				map.put(temStr.charAt(0), temStr.length());
			}
		}
		ArrayList<String> strList = new ArrayList<>();
		Set<Character> keySet = map.keySet();
		Iterator<Character> it = keySet.iterator();
		while (it.hasNext()) {
			Character character = it.next();
			Integer len = map.get(character);
			StringBuilder str = new StringBuilder();
			for (int i = 0; i < len; i++) {
				str.append(character);
			}
			strList.add(str.toString());
		}
		strList.sort(new Comparator<String>() {
			@Override
			public int compare(String o1, String o2) {
				if (o1.length() > o2.length())
					return -1;
				if (o1.length() < o2.length())
					return 1;
				return 0;
			}
		});
		System.out.println(strList);
		System.out.println(strList.get(index - 1).length());
		// System.out.println(map);
	}


# **学习分享,共勉**

这里是小编拿到的学习资源,其中包括“中高级Java开发面试高频考点题笔记300道.pdf”和“Java核心知识体系笔记.pdf”文件分享,内容丰富,**囊括了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。同时还有Java进阶学习的知识笔记脑图(内含大量学习笔记)!**

> **资料整理不易,读者朋友可以转发分享下!**

**Java核心知识体系笔记.pdf**

![记一次蚂蚁金服Java研发岗的面试经历,分享下我的复习笔记面经](https://img-blog.csdnimg.cn/img_convert/46e4aa3dcd4a4e4880a4b617643cb90d.webp?x-oss-process=image/format,png)

**中高级Java开发面试高频考点题笔记300道.pdf**

![记一次蚂蚁金服Java研发岗的面试经历,分享下我的复习笔记面经](https://img-blog.csdnimg.cn/img_convert/7ed8011dde7c5731360b1615b4d384d8.webp?x-oss-process=image/format,png)

**架构进阶面试专题及架构学习笔记脑图**

![记一次蚂蚁金服Java研发岗的面试经历,分享下我的复习笔记面经](https://img-blog.csdnimg.cn/img_convert/b815a6b97967d57e93ccf5d2c9c1e797.webp?x-oss-process=image/format,png)

**Java架构进阶学习视频分享**

> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值