2024年华为OD机试之真正的密码(Java源码)_华为od机考 密码解密 java,阿里校招java面试

最后

按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。

学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。

道路是曲折的,前途是光明的!”

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

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

| 输出 | ninja |
| 说明 | 按要求,hello、ok、ninja都是潜在密码。 检查长度,hello、ninja是真正的密码。 检查字典序,ninja是唯一真正密码。 |

输入a b c d f
输出f
说明按要求,a b c d f 都是潜在密码。 检查长度,a b c d f 是真正的密码。 检查字典序,f是唯一真正密码。

源码和解析
解析:

  1. 字符串按长度降序排序,若长度相同,则按字母顺序降序排序。
  2. 遍历字符串集合,从前往后匹配,找到第一个满足条件的即可

示例代码:

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class T32 {
	public static void main(String[] args) {
		String input="h he hel hell hello o ok n ni nin ninj ninja";
		List<String> wordList=new ArrayList<String>();
		String[] wordArr=input.split(" ");
		for(String w:wordArr){
			wordList.add(w);
		}
		wordList.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;
				//按字符排序
				for(int i=0;i<o1.length();i++){
					if(o1.charAt(i)>o2.charAt(i)) return -1;
					if(o1.charAt(i)<o2.charAt(i)) return 1;
				}
				return 0;
			}
		});
		System.out.println(wordList);
		for(String word:wordList){
			//双指针校验,是否全包含
			int left=0;
			int right=1;
			while(wordList.contains(word.substring(left, right))){
				if(right==word.length()){
					System.out.println(word);
					return;
				}
				right++;
			}
		}
	}
}


代码运行示例:
在这里插入图片描述
在这里插入图片描述

最后

我还为大家准备了一套体系化的架构师学习资料包以及BAT面试资料,供大家参考及学习

已经将知识体系整理好(源码,笔记,PPT,学习视频)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

4613a03fab5e56a57acb)收录**

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

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值