本题相当于是上一题的弱化
实现本身并不难,奇葩的是对时间复杂度要求过于变态
上文提出的两种单词遍历方法:
一种是根据dict中获取的单词的长度去取出字符串(0,len)的子字符串进行比对
另外一种是直接通过for循环自增式的截取(0,i)的子字符串
但是两种都因为时间复杂度的关系没让通过
但是,最奇葩的是,反过来,截取(i,s.length())的子字符串用来比较,就能通过,这特么就很奇葩了:
public boolean wb2( Set<String> dict, String s){
if(s.length() == 0)
return true;
for(int i = s.length()-1; i >=0; i--){
String singleWord = s.substring(i);
if(dict.contains(singleWord)){
if(wb(i,dict,s.substring(0,i)))
return true;
}
}
return false;
}