给定一个字符串 s 和一个字符串数组 dic ,在字符串 s 的任意位置添加任意多个空格后得到的字符串集合是给定字符串数组 dic 的子集(即拆分后的字符串集合中的所有字符串都在 dic 数组中),你可以以任意顺序 返回所有这些可能的拆分方案。
数据范围:字符串长度满足 ,数组长度满足 ,数组中字符串长度满足
"nowcoder",["now","coder","no","wcoder"]
["no wcoder","now coder"]
"nowcoder",["now","wcoder"]
[]
"nowcoder",["nowcoder"]
["nowcoder"]
"nownowcoder",["now","coder"]
["now now coder"]
你可以重复使用 dic 数组中的字符串
static Set<String> list=new HashSet<>(); public String[] wordDiv (String s, String[] dic) { StringBuilder st=new StringBuilder(); findWord(st,s,dic); String[] sa=new String[list.size()]; list.toArray(sa); return sa; } void findWord(StringBuilder ss, String sc, String[] dic){ if(sc.length()==0){ ss.delete(ss.length()-1,ss.length()); list.add(ss.toString()); ss.append(" "); return; } for(int i=0;i<dic.length;i++){ if(dic[i].length()<=sc.length()&&sc.substring(0,dic[i].length()).equals(dic[i])) { ss.append(dic[i]+" "); findWord(ss,sc.substring(dic[i].length()),dic); ss.delete(ss.length()-dic[i].length()-1,ss.length()); } } }