码迷,mamicode.com
首页 > 其他好文 > 详细

Word Ladder

时间:2014-12-26 22:52:57      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

该题目考察的知识点是宽度优先搜索,宽度优先搜索可以用队列保存计算的中间变量。需要注意的是urordered_set,是哈希表实现,查找的效率很高。利用这个特点做题。

具体实现的代码如下:

class Solution {
public:
	unordered_set<string> data;
	queue<pair<string,int>> result;

    int ladderLength(string start, string end, unordered_set<string> &dict) {

	  pair<string,int> temp;
      temp.second = 1;
	  temp.first  = start;


      if(CheckResult(start,end) == true)
	  	return 2;
      GetData(temp,dict);
	  if(result.size() == 0)
	  	return 0;
	
      while(result.size() !=0)
      {
         temp = result.front();
		 if(CheckResult(temp.first, end)== true)
		 {
            return temp.second+1;
		 }
		 result.pop();
		 GetData(temp,dict);
		 	 
	  }


     return 0;
		
        
    }
	bool GetData(pair<string,int> &start,unordered_set<string> &dict)
	{
	    int i=0,j=0;
		string temp;
		pair<string,int> pattern;
	
        for(i = 0; i < start.first.size(); i++)
        {
           temp = start.first;
           for(j=0; j< 26;j++)
           {
             temp[i] = ‘a‘+j;
			 if(dict.find(temp) != dict.end())
			 {
			    pattern.first   = temp;
				pattern.second  = start.second + 1;
                result.push(pattern);
				dict.erase(temp);
			 }

		   }

		}
		return true;
        
	}
	
   bool CheckResult(string &temp, string &end)
   {
      int i=0;
	  int count =0;
	  for(i=0; i< temp.size();i++)
	  {
         if(temp[i] != end[i])
         {
            count++;
		 }
	  }
      if(count == 1)
	   return true;
	  else
	   return false;
   }
};

 

Word Ladder

标签:

原文地址:http://www.cnblogs.com/xgcode/p/4187630.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!