Word Ladder

原创 2016年06月01日 12:21:40

一开始自己以为是用dp来做,其实后来一想,这也不符合dp的3种常见类型。学习了答案才知,这是一道考的经典题目,用的是bfs。

下面这张图真的很形象,解释了里面两个for循环是做什么的,同时一定要记得匹配了一个word后,要从字典中删除,这样来避免重复查找和死循环。


/**
      * @param start, a string
      * @param end, a string
      * @param dict, a set of string
      * @return an integer
      */
    
    private class WordCount {
        public String word;
        public int count;
        public WordCount (String word, int count) {
            this.word = word;
            this.count = count;
        }
    }
    
    public int ladderLength(String start, String end, Set<String> dict) {
        // write your code here
        Queue<WordCount> queue = new LinkedList<>();
        dict.add(end);
        queue.offer(new WordCount(start, 1));
        
        while (!queue.isEmpty()) {
            WordCount wc = queue.poll();
            if (wc.word.equals(end)) {
                return wc.count;
            }
            String curS = wc.word;
            for (int i = 0; i < curS.length(); i++) {
                for (char c = 'a'; c <= 'z'; c++) {
                    char [] arrC = curS.toCharArray();
                    char temp = arrC[i];
                    arrC[i] = c;
                    String str = new String(arrC);
                    if (dict.contains(str)) {
                        queue.offer(new WordCount(str, wc.count + 1));
                        dict.remove(str);
                    }
                    arrC[i] = temp;
                }
            }
        }
        return 0;
    }


相关文章推荐

word_ladder

  • 2014年05月08日 17:40
  • 3KB
  • 下载

word ladder

  • 2014年11月01日 00:56
  • 7KB
  • 下载

127. Word Ladder 单词间的最短路径

Given two words (beginWord and endWord), and a dictionary's word list, find the length of shortest t...

[LeetCode]Word Ladder II

Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) from...

Leetcode: Word Ladder II

Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) from...
  • doc_sgl
  • doc_sgl
  • 2013年10月28日 20:54
  • 7528

LeetCode :Word Ladder II My Solution

Word Ladder II  Total Accepted: 11755 Total Submissions: 102776My Submissions Given two ...
  • AresGod
  • AresGod
  • 2014年10月03日 23:25
  • 1296

leetcode解题笔记-word-ladder (python版)

原题地址:https://oj.leetcode.com/problems/word-ladder/ 提交了多次,基本都是超时错误。记录一下做题的思路。 1、首先这种问题要么用宽度遍历,要么深度遍历。...
  • winnerX
  • winnerX
  • 2014年11月27日 17:48
  • 679

leetcode Word Ladder

废话少说,先上题: Given two words (start and end), and a dictionary, find the length of shortest transfor...

leetcode-Word Ladder II

Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) from...

【广度优先遍历】Word Ladder II

题目:leetcode Word Ladder II   Given two words (start and end), and a dictionary, find al...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Word Ladder
举报原因:
原因补充:

(最多只允许输入30个字)