Phone String Replacement

来源:互联网 发布:亚加装饰 知乎 编辑:程序博客网 时间:2024/06/11 12:57
Input: 一个字符串, 每个字符都有几个对应的replacement. 
Output: Generate all the possible Strings after replacement. 
ex. Input: ABC, A-->@,$, B-->&, C--> *

     Output: @&*, $&*

import java.util.*;public class PhoneStringReplacement {public static void main(String[] args) {PhoneStringReplacement sr = new PhoneStringReplacement();HashMap<Character, List<Character>> map = new HashMap<Character, List<Character>>();map.put('A', new ArrayList<Character>());map.put('B', new ArrayList<Character>());map.put('C', new ArrayList<Character>());map.get('A').add('@');map.get('A').add('$');map.get('A').add('!');map.get('B').add('&');map.get('C').add('*');List<String> res = sr.getStringReplacements("ABC", map);for (String s : res) {System.out.println(s);}}public List<String> getStringReplacements(String str, HashMap<Character, List<Character>> map) {List<String> res = new ArrayList<String>();if (str == null || str.length() == 0) {return res;}helper(res, str, new StringBuilder(), map, 0);return res;}private void helper(List<String> res, String str, StringBuilder sb, HashMap<Character, List<Character>> map,int pos) {if (pos == str.length()) {res.add(sb.toString());return;}char c = str.charAt(pos);List<Character> list = map.get(c);for (int i = 0; i < list.size(); i++) {char ch = list.get(i);sb.append(ch);helper(res, str, sb, map, pos + 1);sb.deleteCharAt(sb.length() - 1);}}}


0 0
原创粉丝点击