赞
踩
按照上面的过程,4个月的时间刚刚好。当然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是唯一真正密码。 |
源码和解析
解析:
- 字符串按长度降序排序,若长度相同,则按字母顺序降序排序。
- 遍历字符串集合,从前往后匹配,找到第一个满足条件的即可
示例代码:
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,学习视频)
4613a03fab5e56a57acb)收录**
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。