Word LadderII Each Time Delete每次删除一个字符
严氏北美IT公司面试真题汇总和解答论坛 :: LinkedIn公司面试真题: 注册用户可以看到隐藏题目:2017年下半年上机题,8 9 10三个月的onsite面试真题 :: 广度优先搜索:字符串相关:WordLadder系列
Page 1 of 1
Word LadderII Each Time Delete每次删除一个字符
class Pair {
String str;
ArrayList<String> path;
HashSet<String> hash;
Pair(String str, ArrayList<String> path, HashSet<String> hash) {
this.str = str;
this.path = path;
this.hash = hash;
}
}
public List<List<String>> findLadders(String start, String end, HashSet<String> dict) {
List<List<String>> result = new ArrayList<List<String>>();
ArrayList<String> path = new ArrayList<String>();
HashSet<String> hash = new HashSet<String>();
if(start==null||end==null)
return result;
Queue<Pair> queue = new LinkedList<Pair>();
path.add(start);
hash.add(start);
Pair pair = new Pair(start, path,hash);
int min_length = -1;
queue.add(pair);
while(!queue.isEmpty()) {
pair = queue.poll();
String str = pair.str;
for(int i=0;i<str.length();i++) {
StringBuilder sb=new StringBuilder(str);
sb.deleteCharAt(i);
String interWord = new String(sb);
if(interWord.equals(end)) {
path = pair.path;
path.add(interWord);
if(min_length==-1)
min_length = path.size();
if(path.size()>min_length) {
return result;
} else {
result.add(path);
continue;
}
}else if(dict.contains(interWord)&&!pair.hash.contains(interWord)) {
path = new ArrayList<String>(pair.path);
hash = new HashSet<String>(pair.hash);
path.add(interWord);
hash.add(interWord);
Pair interNode = new Pair(interWord, path,hash);
queue.add(interNode);
}
}
}
return result;
}
public static void main(String[] args) {
WordLadderIIEachTimeDelete test=new WordLadderIIEachTimeDelete();
String beginWord="12345";
String endWord="5";
HashSet<String> wordList=new HashSet<String>();
wordList.add("2345");
wordList.add("345");
wordList.add("45");
wordList.add("5");
List<List<String>> res=test.findLadders(beginWord, endWord, wordList);
for(List<String> i : res){
for(String j: i){
System.out.print(j+" ");
}
System.out.println();
}
}
String str;
ArrayList<String> path;
HashSet<String> hash;
Pair(String str, ArrayList<String> path, HashSet<String> hash) {
this.str = str;
this.path = path;
this.hash = hash;
}
}
public List<List<String>> findLadders(String start, String end, HashSet<String> dict) {
List<List<String>> result = new ArrayList<List<String>>();
ArrayList<String> path = new ArrayList<String>();
HashSet<String> hash = new HashSet<String>();
if(start==null||end==null)
return result;
Queue<Pair> queue = new LinkedList<Pair>();
path.add(start);
hash.add(start);
Pair pair = new Pair(start, path,hash);
int min_length = -1;
queue.add(pair);
while(!queue.isEmpty()) {
pair = queue.poll();
String str = pair.str;
for(int i=0;i<str.length();i++) {
StringBuilder sb=new StringBuilder(str);
sb.deleteCharAt(i);
String interWord = new String(sb);
if(interWord.equals(end)) {
path = pair.path;
path.add(interWord);
if(min_length==-1)
min_length = path.size();
if(path.size()>min_length) {
return result;
} else {
result.add(path);
continue;
}
}else if(dict.contains(interWord)&&!pair.hash.contains(interWord)) {
path = new ArrayList<String>(pair.path);
hash = new HashSet<String>(pair.hash);
path.add(interWord);
hash.add(interWord);
Pair interNode = new Pair(interWord, path,hash);
queue.add(interNode);
}
}
}
return result;
}
public static void main(String[] args) {
WordLadderIIEachTimeDelete test=new WordLadderIIEachTimeDelete();
String beginWord="12345";
String endWord="5";
HashSet<String> wordList=new HashSet<String>();
wordList.add("2345");
wordList.add("345");
wordList.add("45");
wordList.add("5");
List<List<String>> res=test.findLadders(beginWord, endWord, wordList);
for(List<String> i : res){
for(String j: i){
System.out.print(j+" ");
}
System.out.println();
}
}
Similar topics
» Shortest Word DistanceIII
» Word Distance Finder
» Shortest Word DistanceII
» Shortest Word Distance IIDot5
» Word Search I leetcode 原题 amazon onsite特喜欢考
» Word Distance Finder
» Shortest Word DistanceII
» Shortest Word Distance IIDot5
» Word Search I leetcode 原题 amazon onsite特喜欢考
严氏北美IT公司面试真题汇总和解答论坛 :: LinkedIn公司面试真题: 注册用户可以看到隐藏题目:2017年下半年上机题,8 9 10三个月的onsite面试真题 :: 广度优先搜索:字符串相关:WordLadder系列
Page 1 of 1
Permissions in this forum:
You cannot reply to topics in this forum
|
|