zoukankan      html  css  js  c++  java
  • [leetcode]Word Ladder

    此题要多品品。由于是求最短的路径,所以用BFS,DFS会在大数据的时候超时,原因也容易理解。最终解法参考了:http://discuss.leetcode.com/questions/1108/word-ladder 和 http://blog.sina.com.cn/s/blog_b9285de20101j1xl.html

    1.用了char[] curr=queue.poll().toCharArray();这个在字符串中间替换字符时很有用;
    2.用了thisLevel和nextLevel。本来用DFS的时候记录dist很自然,多一个递归dist++就行了。BFS的时候有点不知所措,现在知道了可以记录这一层的个数和下一层的个数。

    public class Solution {
        public int ladderLength(String start, String end, HashSet<String> dict) {
            int dist = 1;
            if (start.equals(end)) return dist;
            HashSet<String> added = new HashSet<String>();
            Queue<String> queue = new LinkedList<String>();
            queue.offer(start);
            added.add(start);
            int thisLevel = 1;
            int nextLevel = 0;
            while (queue.size() != 0)
            {
                char[] curr=queue.poll().toCharArray();
                thisLevel--;
                for (int i = 0; i < start.length(); i++)
                {
                    char tmp = curr[i];
                    for (char c = 'a'; c <= 'z'; c++)
                    {
                        if (c == tmp) continue;
                        curr[i] = c;
                        String str = new String(curr);
                        if (str.equals(end)) return dist + 1;
                        if (dict.contains(str) && !added.contains(str))
                        {
                            queue.offer(str);
                            added.add(str);
                            nextLevel++;
                        }
                    }
                    curr[i] = tmp;
                }
                if (thisLevel == 0)
                {
                    thisLevel = nextLevel;
                    nextLevel = 0;
                    dist++;
                }
            }
            return 0;
        }
    }
    

    其实说白了,就是topo图的BFS,建个图更清晰,但也更麻烦一些。

    http://blog.csdn.net/beiyetengqing/article/details/8580577

  • 相关阅读:
    python爬取酷狗音乐
    python爬取酷我音乐
    排列组合+逆元模板
    python爬取QQVIP音乐
    一维数组的动态和
    买卖股票的最佳时机 II
    最佳买卖股票时机含冷冻期
    买卖股票的最佳时机
    子集
    最短无序连续子数组
  • 原文地址:https://www.cnblogs.com/lautsie/p/3293547.html
Copyright © 2011-2022 走看看