LeetCode-127.Word Ladder

原创 2016年05月30日 21:13:26

https://leetcode.com/problems/word-ladder/

Given two words (beginWord and endWord), and a dictionary's word list, find the length of shortest transformation sequence from beginWord to endWord, such that:

  1. Only one letter can be changed at a time
  2. Each intermediate word must exist in the word list

For example,

Given:
beginWord = "hit"
endWord = "cog"
wordList = ["hot","dot","dog","lot","log"]

As one shortest transformation is "hit" -> "hot" -> "dot" -> "dog" -> "cog",
return its length 5.

Note:

  • Return 0 if there is no such transformation sequence.
  • All words have the same length.
  • All words contain only lowercase alphabetic characters.

将问题转化为求树的最小深度问题 LeetCode-111.Minimum Depth of Binary Tree

c++

int ladderLength(string beginWord, string endWord, unordered_set<string>& wordList) 
{
	int len = 1, slen = beginWord.length(),n;
	queue<string> q;
	q.push(beginWord);
	while ((n = q.size()) > 0)
	{
		len++;
		for (int i = 0; i < n; i++)
		{
			string s = q.front();
			q.pop();
			for (int j = 0; j < slen; j++)
			{
				char ch = s[j];
				for (char c = 'a'; c <= 'z'; c++)
				{
					s[j] = c;
					if (s == endWord)
						return len;
					if (wordList.find(s) != wordList.end())
					{
						q.push(s);
						wordList.erase(s);
					}
					s[j] = ch;
				}
			}
		}
	}
	return 0;
}


public int LadderLength(string beginWord, string endWord, ISet<string> wordList) 
    {
        int len = 1,slen= beginWord.Length,n;
        Queue<string> q = new Queue<string>();
        q.Enqueue(beginWord);
        while ((n=q.Count)>0)
        {
            len++;
            for (int i = 0; i < n; i++)
            {
                string s = q.Dequeue();
                for (int j = 0; j < slen; j++)
                {
                    char[] ch = s.ToCharArray();
                    for (char c = 'a'; c <= 'z'; c++)
                    {
                        ch[j] = c;
                        string tmp = new string(ch);
                        if (tmp == endWord)
                            return len;
                        if (wordList.Contains(tmp))
                        {
                            q.Enqueue(tmp);
                            wordList.Remove(tmp);
                        }
                    }
                }
            }
        }
        return 0;
    }

参考

http://www.cnblogs.com/TenosDoIt/p/3443512.html

http://blog.csdn.net/linhuanmars/article/details/23029973


版权声明:本文为博主原创文章,未经博主允许不得转载。

深度学习(三十二)半监督阶梯网络学习笔记

这几年深度学习声名鹊起,一个又一个AI领域被深度学习攻破,然而现在大部分深度学习所采用的算法都是有监督学习的方法,需要大量的标注数据,需要耗费大量的人力物力。因此如何充分利用大量的无标签数据资源,必将...
  • hjimce
  • hjimce
  • 2016年03月13日 14:26
  • 9402

单词变换路径 Word Ladder II

这一问题是《单词变换距离 Word Ladder (无权图的最短路径)   》的引申问题。 Given two words (start and end), and a dictionary...
  • luckyjoy521
  • luckyjoy521
  • 2014年04月02日 17:09
  • 2105

Java中Integer的valueOf方法,-128到127的整数将被缓存

Java中int和Integer使用==比较将Integer拆箱成int后比较大小(jdk版本不小于1.5) Integer和Integer之间==比较,是对象之间的比较,看两个引用是否指向同一...
  • shihui512
  • shihui512
  • 2016年03月23日 10:17
  • 2096

LeetCode[127. Word Ladder] 题解 难度[medium]

C++语言,使用BFS解决word ladder问题
  • cs_linyf
  • cs_linyf
  • 2016年09月06日 15:14
  • 303

leetcode解题笔记:127. Word Ladder

题目要求: Given two words (beginWord and endWord), and a dictionary’s word list, find the length of sho...
  • crystal6918
  • crystal6918
  • 2016年07月16日 15:02
  • 576

[Leetcode 126 & 127, hard & medium] Word Ladder II & I

[Leetcode 126 & 127, hard & medium] Word Ladder II & I
  • u012212811
  • u012212811
  • 2015年04月05日 01:03
  • 401

LeetCode(127) Word Ladder

题目如下: Given two words (start and end), and a dictionary, find the length of shortest transformation ...
  • feliciafay
  • feliciafay
  • 2015年01月19日 04:21
  • 654

leetcode 127 Word Ladder

Given two words (start and end), and a dictionary, find the length of shortest transformation sequen...
  • nedushy123
  • nedushy123
  • 2014年07月07日 16:20
  • 789

[LeetCode127]Word Ladder

Given two words (start and end), and a dictionary, find the length of shortest transformation sequen...
  • sbitswc
  • sbitswc
  • 2014年06月25日 01:11
  • 594

LeetCode 127 Word Ladder (广度优先搜索)

最近重新捡起算法来看,发现广度优先搜索的代码不是很熟,就在leetcode上搜了一下,找到这道题练练,还是发现了很多问题的。题目描述: Given two words (beginWord and ...
  • u012462822
  • u012462822
  • 2016年04月05日 16:42
  • 485
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode-127.Word Ladder
举报原因:
原因补充:

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