大佬教程收集整理的这篇文章主要介绍了单词梯问题,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public class WordLadder { //把start通过Dict内的字符串转换成end需要多少步 一次只能转换一个char 方案:广度优先算法 public static void main(String[] args) { String start = "hit"; String end = "cog"; Set<String> Dict = new HashSet<>(); Dict.add("hot"); Dict.add("dot"); Dict.add("dog"); Dict.add("lot"); Dict.add("log"); System.out.println(getStep(start,end,Dict)); } public static int getStep(String start, String end, Set<String> Dict){ if(Dict==null||Dict.size()==0){ return 0; } Dict.add(end); Queue<String> queue = new LinkedList<>(); queue.offer(start); Set<String> duplicate = new HashSet<>(); int step = 1; while (!queue.isEmpty()){ step++; int size = queue.size(); for(int i=0;i<size;i++){ String word = queue.poll(); List<String> nextList = getNextList(word,Dict); for(String s:nextList){ if(duplicate.contains(s)){ conTinue; } if(s.equals(end)){ return step; } duplicate.add(s); queue.offer(s); } } } return -1; } private static List<String> getNextList(String word, Set<String> Dict) { List<String> nextList = new ArrayList<>(); for(char i='a';i<'z';i++){ for(int j=0;j<word.length();j++){ String next = getWord(word,i,j); if(Dict.contains(next)){ nextList.add(next); } } } return nextList; } private static String getWord(String word, char i, int j) { char[] array = word.toCharArray(); arraY[j]=i; return new String(array); }}
以上是大佬教程为你收集整理的单词梯问题全部内容,希望文章能够帮你解决单词梯问题所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。