严氏北美IT公司面试真题汇总和解答论坛
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Word LadderII Each Time Delete每次删除一个字符

Go down

Word LadderII Each Time Delete每次删除一个字符 Empty Word LadderII Each Time Delete每次删除一个字符

Post by Admin Sat Oct 21, 2017 2:26 pm

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();
}
}

Admin
Admin

Posts : 124
Join date : 2017-10-21

https://csinterviewquestions.forumotion.com

Back to top Go down

Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum