leetcode_17_电话号码的字母组合@@dfs

在这里插入图片描述

自己乱写的可能是bfs

class Solution {
   	private static String[] getFromnum(int num) {
		if (num < 7) {
			String[] ss = new String[3];
			int flag = 97 + (num - 2) * 3;
			ss[0] = (char) flag + "";
			ss[1] = ((char) (flag + 1)) + "";
			ss[2] = ((char) (flag + 2)) + "";
			return ss;
		} else if (num == 7) {
			String[] ss = new String[4];
			ss[0] = 'p' + "";
			ss[1] = 'q' + "";
			ss[2] = 'r' + "";
			ss[3] = 's' + "";
			return ss;
		} else if (num == 8) {
			String[] ss = new String[3];
			ss[0] = 't' + "";
			ss[1] = 'u' + "";
			ss[2] = 'v' + "";
			return ss;
		} else {
			String[] ss = new String[4];
			ss[0] = 'w' + "";
			ss[1] = 'x' + "";
			ss[2] = 'y' + "";
			ss[3] = 'z' + "";
			return ss;
		}
	}

	public static List<String> letterCombinations(String digits) {
		char[] charArray = digits.toCharArray();
		int len = charArray.length;
        List<String> list = new ArrayList<String>();
		if (len == 0)
			return list;
		
		int num = charArray[0];
		num -= 48;
		String[] fromnum = getFromnum(num);
		for (String s : fromnum) {
			list.add(s);
		}
		for (int i = 1; i < len; i++) {
			num = charArray[i];
			num -= 48;
			List<String> list2 = new ArrayList<String>();
			String[] fromnum2 = getFromnum(num);
			for (String s : list) {
				for (String s4 : fromnum2) {
					list2.add(s+s4);
				}
			}
			list = list2;
		}
		return list;
	}
}

dfs

char[][] letters={
			{'a','b','c'},{'d','e','f'},
			{'g','h','i'},{'j','k','l'},{'m','n','o'},
			{'p','q','r','s'},{'t','u','v'},{'w','x','y','z'}
			};
char[] charArray;
List<String> list;
char[] string;
	
	  public List<String> letterCombinations(String digits) {
		  charArray = digits.toCharArray();
		  list=new ArrayList<String>();
		  if(charArray.length==0) return list;
          string=new char[charArray.length];
		  dfs(0);
		 return list;

	    }
	  
	  public void dfs(int idx) {
		  if(idx==charArray.length) {
			  list.add(new String(string));
			  return ;
		  }
		  char c=charArray[idx];
		  char[] letter=letters[c-'2'];
		  for(char ch:letter) {
			  string[idx]=ch;
			  dfs(idx+1);
		  }
		  
		  
	  }

猜你喜欢

转载自blog.csdn.net/ruochen82155551/article/details/107601818