lintcode: Word Ladder
来源:互联网 发布:1100lu千百最新域名 编辑:程序博客网 时间:2024/05/16 18:12
Given two words (start and end), and a dictionary, find the length of shortest transformation sequence from start to end, such that:
Only one letter can be changed at a time
Each intermediate word must exist in the dictionary
这题的思路很好想,就是两个只差一个字母的字符串之间连一条边。
1.但难点是怎么判断两个字符串之间仅仅一个字母不同。
2.用BFS求两个节点之间的最短路径。
3.一个注意的细节:
C++ string 转为char*
直接char *chs=front.c_str();
不行,因为c_str()返回类型是 const char*
需要如下:
char *chs = new char[front.size()];strcpy(chs, front.c_str());
其实string 转char*,这样就行
string str = "abc";char *chs = &str[0];string str2(chs);cout << str2 << endl;
str2输出是abc
class Solution {public: /** * @param start, a string * @param end, a string * @param dict, a set of string * @return an integer */ int ladderLength(string start, string end, unordered_set<string> &dict) { // write your code here queue<string> Q; set<string> visited; dict.insert(end); Q.push(start); int cnt = 1; while (!Q.empty()){ cnt++; int Qsize = Q.size(); while (Qsize--){ string front = Q.front(); Q.pop(); for (int i = 0; i<front.size(); i++){ //char *chs = new char[front.size()]; //strcpy(chs, front.c_str()); string chs=front; for (char ch = 'a'; ch <= 'z'; ch++){ chs[i] = ch; //string tmp(chs); if (dict.count(chs) && !visited.count(chs)){ if (chs == end){ return cnt; } Q.push(chs); visited.insert(chs); } } } } } return 0; }};
参考
http://www.kancloud.cn/kancloud/data-structure-and-algorithm-notes/73094
0 0
- lintcode: Word Ladder
- lintcode:Word Ladder II
- ***[Lintcode]Word Ladder 单词接龙
- Word Ladder
- Word Ladder
- word ladder
- Word Ladder
- Word Ladder
- Word Ladder
- Word Ladder
- Word Ladder
- Word Ladder
- Word Ladder
- Word Ladder
- Word Ladder
- Word Ladder
- Word Ladder
- Word Ladder
- 一种CSS完全居中的神奇方法
- java对象与byte[]数组之间的相互转化,压缩解压缩操作
- 15电气1班麻天骄
- ORMLite的几个关键注解的使用说明
- 百度地图的集成定位与路径规划
- lintcode: Word Ladder
- iOS开发之 【_NSArrayM objectAtIndex:】:index 0 beyond bounds for empty array
- Java基础09 类数据与类方法
- 4.2016物电学院 电气工程及其自动化专业 辛雅松 15050341033
- MVVM设计模式
- JS学习笔记(三)
- MongoDB常用操作命令大全
- C语言基础 进制的转换
- servlet 的destroy什么时候调用