我有一个包含从整数到字符的映射的库。我还有一个以整数格式给出的字符串。我正在尝试编写一个方法,当解释该字符串时,将返回所有可能的字符组合。例如:给定以下库
我的当前解决方案如下:
有没有更优化的方法来解决这个问题?另外,我的解决方案复杂度是多少?我假设它是O(N^3)时间。
a=1, b=2, c=3, k=11
和字符串"1123"
,输出应该是包含"aabc","kbc"
的列表。假设所有给定的数字都可以在库中找到。我的当前解决方案如下:
public static ArrayList<String> d(String s) {
ArrayList<String> s2 = new ArrayList<String>();
if (s.length() == 1) {
s2.add(""+library.get(Integer.valueOf(s)));
return s2;
}
for (int i=0; i < s.length(); i++) {
String curr = s.substring(0, i + 1);
if (library.containsKey(Integer.valueOf(curr))){
ArrayList<String> strings = d(s.substring(i + 1));
char c2 = library.get(Integer.valueOf(curr));
for (String tmp : strings){
s2.add(c2 + tmp);
}
}
}
return s2;
}
有没有更优化的方法来解决这个问题?另外,我的解决方案复杂度是多少?我假设它是O(N^3)时间。