131.分割回文串
二维数组向其中填写一些值。
可以简化一下代码。
Arrays.fill(arrayname,starting index, ending index,value);
比如boolean需要初始值为正确的写法。
Arrays.fill(arrayname ,starting index ,ending index ,value)
动态规划中,处理字符串的每一个子串是否是回文串:
转移状态的方程是:当i>=j 两个指针相等或者前指针超过了后指针。然后就是:两端的字符相等。
f=new boolean [n][n];
for(int i=0;i<n;i++){
Arrays.fill(f[i],true);
}
//动态规划处理字符串;
for(int i=n-1;i>=0;--i){
for(int j=i+1;j<n;++j){
f[i][j]=(s.charAt(i)==s.charAt(j))&&f[i+1][j-1];
}
}
初始化状态数组是都是true
因为要用到f[i+1][j-1]
i在i+1之后,所以要用倒序。
对象的赋值问题,直接加入是对象的引用的赋值。
if(i==n){
ret.add(new ArrayList<String>(ans));//看来对于一些对象的赋值问题还是的小心啊,时刻记得直接加入是对象的引用的赋值。
return;
}
本文探讨了如何简化动态规划解决回文串问题,通过代码示例说明如何利用二维数组初始化和状态转移方程。特别强调了对象赋值时引用的重要性。
825

被折叠的 条评论
为什么被折叠?



