在做这个题的时候遇到了一个问题,当变量设为静态之后,在LeetCode提交的时候需要调用clear()函数清空值。这也涉及到静态变量是在类加载的时候初始化,是所有对象共有的
class Solution {
static HashMap<String,String> map = new HashMap<String,String>()
{
{
put("2", "abc");
put("3", "def");
put("4", "ghi");
put("5", "jkl");
put("6", "mno");
put("7", "pqrs");
put("8", "tuv");
put("9", "wxyz");
}
};
static List<String> ans = new ArrayList<String>();
static void dfs(String digits, int pos, String path)
{
if(pos == digits.length())
{
ans.add(path);
return ;
}
String t = map.get(digits.substring(pos, pos + 1));
for(int i = 0; i < t.length(); i ++)
{
dfs(digits, pos + 1, path + t.charAt(i));
}
}
public List<String> letterCombinations(String digits) {
ans.clear(); //必须清除ans内的元素,不然会影响下次调用
int n = digits.length();
if(n == 0) return ans;
dfs(digits, 0, "");
return ans;
}
}