华为OD机试之真正的密码(Java源码)

news/2024/7/20 18:16:10 标签: java, 开发语言, 华为OD

真正的密码

题目描述

  1. 一行中输入一个字符串数组,如果其中一个字符串的所有以索引0开头的子串在数组中都有,那么这个字符串就是潜在密码
  2. 在所有潜在密码中最长的是真正的密码,如果有多个长度相同的真正的密码,那么取字典序最大的为唯一的真正的密码,求唯一的真正的密码。

输入描述

一个字符串 字符之间用空格隔开

输出描述

真正的那个密码字符串

用例

输入h he hel hell hello o ok n ni nin ninj ninja
输出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. 遍历字符串集合,从前往后匹配,找到第一个满足条件的即可

示例代码:

java">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++;
			}
		}
	}
}

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


http://www.niftyadmin.cn/n/368467.html

相关文章

零基础自学黑客【网络安全】啃完这些足够了

我刚学网络安全&#xff0c;该怎么学&#xff1f;要学哪些东西&#xff1f;有哪些方向&#xff1f;怎么选&#xff1f; 怎么入门&#xff1f; 这个 Web 安全学习路线&#xff0c;整体大概半年左右&#xff0c;具体视每个人的情况而定。 &#xff08;上传一直很模糊&#xff0c…

关于云计算和raid技术的对比

云计算和RAID技术是两个不同领域的概念&#xff0c;但它们可以在存储和数据保护方面进行对比。 云计算&#xff08;Cloud Computing&#xff09;是指通过网络将计算资源、存储资源和应用程序提供给用户的一种计算模式。它基于虚拟化技术&#xff0c;通过互联网实现按需访问和使…

springboot+springsecurity+jwt+elementui图书管理系统

​​图书管理系统​​ 关注公号&#xff1a;java大师&#xff0c;回复“图书”&#xff0c;获取源码 一、springboot后台 1、mybatis-plus整合 1.1添加pom.xml <!--mp逆向工程 --><dependency><groupId>org.projectlombok</groupId><artifactId&…

[动态规划]——线性DP(LIS/LCS/LCIS等) 详解

【引入】 线性DP&#xff0c;是较常见的一类动态规划问题&#xff0c;其是在线性结构上进行状态转移&#xff0c;这类问题不像背包问题、区间DP等有固定的模板 线性动态规划的目标函数为特定变量的线性函数&#xff0c;约束是这些变量的线性不等式或等式&#xff0c;目的是求…

Java经典笔试题—day14

Java经典笔试题—day14 &#x1f50e;选择题&#x1f50e;编程题&#x1f36d;计算日期到天数转换&#x1f36d;幸运的袋子 &#x1f50e;结尾 &#x1f50e;选择题 (1)定义学生、教师和课程的关系模式 S (S#,Sn,Sd,Dc,SA &#xff09;&#xff08;其属性分别为学号、姓名、所…

shell三剑客之grep

要想了解shell,grep是绕不过去的,今天就说说grep。 grep简介 grep是Linux中最常用的”文本处理工具”之一,grep与sed、awk合称为Linux中的三剑客。 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文…

【剑指offer】数据结构——数组

目录 数据结构——数组直接解【剑指offer】03.数组中重复的数字排序法集合法原地置换 【剑指offer】04. 二维数组中的查找【剑指offer】29. 顺时针打印矩阵【剑指offer】39. 数组中出现次数超过一半的数字【剑指offer】40. 最小的k个数【剑指offer】45. 把数组排成最小的数【剑…

JOSEF约瑟 JDL-1001A 电流继电器 导轨式安装 批发价格

名称&#xff1a;电流继电器品牌&#xff1a;JOSEF约瑟型号&#xff1a;JDL-1001A触点容量&#xff1a;250V2A整定范围&#xff1a;0.03-9.99A返回系数&#xff1a;≥0.9特点&#xff1a;交直流两用、消耗小、返回系数高。 型号说明 JD L -1 XXX X/ XXX / XXX 系列型号 JDL…