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

总结

机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。

对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。

你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:

请转发本文支持一下

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

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

第一行有一个子串(1<长度<=100),只包含大写字母。
第二行为 k的值

输出描述

输出连续出现次数第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());
		}


# 最后

整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

![image](https://img-blog.csdnimg.cn/img_convert/01db346768b5cab2a02570b542301c1e.webp?x-oss-process=image/format,png)

![image](https://img-blog.csdnimg.cn/img_convert/9e7af0dbda7325ae60ae1e16ac64c23d.webp?x-oss-process=image/format,png)

其实面试这一块早在第一个说的25大面试专题就全都有的。以上提及的这些全部的面试+学习的各种笔记资料,我这差不多来回搞了三个多月,收集整理真的很不容易,其中还有很多自己的一些知识总结。正是因为很麻烦,所以对以上这些学习复习资料感兴趣,

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

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

4613a03fab5e56a57acb)收录**

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值