package com.interview.books.svinterview;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
/**
* Created_By: stefanie
* Date: 14-12-8
* Time: 下午4:43
*/
public class SV15_ConvertWordByRules {
public void convert(String s, HashMap<Character, ArrayList<Character>> rules){
HashSet<String> sets = new HashSet<String>();
sets.add(s);
convert(s, 0, rules, "", sets);
}
public void convert(String s, int offset, HashMap<Character, ArrayList<Character>> rules, String prefix, HashSet<String> sets){
if(offset == s.length()){
if(!sets.contains(prefix)){
System.out.println(prefix);
sets.add(prefix);
}
return;
}
convert(s, offset + 1, rules, prefix + s.charAt(offset), sets); //preserve the old char
ArrayList<Character> mutations = rules.get(s.charAt(offset));
if(mutations != null){
for(Character character : mutations){
convert(s, offset + 1, rules, prefix + character, sets);
}
}
}
public static void main(String[] args){
HashMap<Character, ArrayList<Character>> rules = new HashMap<>();
ArrayList<Character> options = new ArrayList<>();
options.add('@');
rules.put('a', options);
options = new ArrayList<>();
options.add('3');
options.add('E');
rules.put('e', options);
SV15_ConvertWordByRules converter = new SV15_ConvertWordByRules();
converter.convert("face", rules);
}
}