Word Ladder

原创 2015年07月09日 18:24:30
class Solution {
public:
     bool onediff(string start,string temp)
     {
         int count=0;
         for(int i=0;i<start.size();i++)
         {
             if(start[i]!=temp[i])
              count++;
         }
         return count==1?1:0;
     }
     
    int ladderLength(string beginWord, string endWord, unordered_set<string>& wordDict) {
        
        queue<string>Q1,Q2;
       
        set<string>set1;
       
       int result=1;
        unordered_set<string>::iterator iter;
        Q1.push(beginWord);
        set1.insert(beginWord);
        while(!Q1.empty())
        {
            while(!Q1.empty())
            {
                string temp=Q1.front();
                Q1.pop();
                if(temp==endWord)
                return result++;
            
              for(iter=wordDict.begin();iter!=wordDict.end();iter++)
              {
                  if(onediff(temp,*iter)&&set1.find(*iter) == set1.end())
                 {
                     Q2.push(*iter);
                     
                     set1.insert(*iter);
                 }
                 // if(onediff(*iter,endWord) )   //不能提前跳出,因为同一层后续中可能有endWord;
                //  return result+1; 
                
             }
            }
             result++;
            swap(Q1,Q2);
        }
        return 0;
    }
    

};

超时,当字典中元素较多时不行,不能用onediff函数。

class Solution {
public:
    /* bool onediff(string start,string temp)
     {
         int count=0;
         for(int i=0;i<start.size();i++)
         {
             if(start[i]!=temp[i])
              count++;
         }
         return count==1?1:0;
     }
     */
     
    int ladderLength(string beginWord, string endWord, unordered_set<string>& wordDict) {
        
        queue<string>Q1,Q2;
       
        set<string>set1;
       
       int result=1;
        //unordered_set<string>::iterator iter;
        Q1.push(beginWord);
        set1.insert(beginWord);
        while(!Q1.empty())
        {
            while(!Q1.empty())
            {
                string temp=Q1.front();
                Q1.pop();
               
            
              for(int i=0;i<temp.size();i++)
              {
                  
                 for(char j='a';j<='z';j++)
                 {
                     if(temp[i]==j) continue;
                     swap(temp[i],j);
                    // temp[i] = j;
                      if(temp==endWord)
                   return ++result;
                     if(wordDict.count(temp)!=0&&set1.count(temp)==0)
                    {
                        Q2.push(temp);
                     set1.insert(temp);
                    }
                    swap(temp[i],j);
                    
                 }
                 
                
             }
            }
             result++;
            swap(Q1,Q2);
        }
        return 0;
    }
    
};

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

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

单词变换路径 Word Ladder II

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

单词变换距离 Word Ladder (图的最短路径)

问题:Given two words (start and end), and a dictionary, find the length of shortest transformation s...
  • luckyjoy521
  • luckyjoy521
  • 2014年02月28日 20:15
  • 1736

word ladder

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

word_ladder

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

有道的一道面试题 突然觉得跟word ladder有些关系

题目描述:
  • C12345SDN
  • C12345SDN
  • 2014年05月26日 13:45
  • 969

Word Ladder 宽搜超时 新方法未做!!!!!

题目: 点击打开链接 解答: 第一个思路,宽搜,跳过已经搜索过得
  • skyoceanlover
  • skyoceanlover
  • 2014年08月31日 16:13
  • 461

[算法分析与设计] leetcode 每周一题: Word Ladder

题目链接:https://leetcode.com/problems/word-ladder/description/ 题目 : Given two words (beginWor...
  • liangtjsky
  • liangtjsky
  • 2017年11月22日 13:45
  • 50

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

Given two words (beginWord and endWord), and a dictionary's word list, find the length of shortest t...
  • u010005161
  • u010005161
  • 2016年07月31日 15:27
  • 207

【广度优先遍历】Word Ladder II

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

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