题目:
给定一个字符串, 一个数组,判断这个字符串能否被分隔成字典里的一个个单词。
用动态规划算法
我面试时写的是下面的代码
public static boolean divied2(String s,String[] dict){
boolean result=false;
if(s.length()==0)
return true;
for (int i = 0; i < dict.length; i++) {
int index=s.indexOf(dict[i]);
if (index!=-1) {
System.out.println(index);
String tmp1=s.substring(0,index);
String tmp2=s.substring(index+dict[i].length(),s.length());
return divied(tmp1+tmp2,dict);
}
}
return result;
}
但是对于测试用例
String[] dict={
"百度一","百度","一下","我就","知","道"};
System.out.println(divied2("百度一下我就知道", dict));
这个是不通过的。因为百度一这个词先删除了,一下这个单词被破坏了,
回来想了一下,上面的原因是终止了遍历。经过改进后,测试通过
原题在于这个|=操作,也就是说对所有的结果进行或操作,有一个可以分隔完全就可以。
public static boolean divied(String s,String[] dict){