2020-02-06 17:01:36

问题描述:

问题求解:

非常经典的计数dp问题,思路就是统计以每个字符为结尾的个数,最后求和即可。

dp[i] = sum of (dp[j]) 0 <= j <= i;可以理解为将最后的一个字符追加到前面的字符串后面。

问题是如何去重。

当我们遇到相同的字符的时候,首先最后一个字符单独最为subseq要删除,因为前面计算过了,其次,只能加到第一次碰到形同字符的位置,因为再前面的在这个重复字符的位置已经计算过了。

    int mod = (int)1e9 + 7;
public int distinctSubseqII(String S) {
int n = S.length();
int[] dp = new int[n];
Arrays.fill(dp, 1);
for (int i = 0; i < n; i++) {
for (int j = i - 1; j >= 0; j--) {
if (S.charAt(i) != S.charAt(j)) dp[i] = (dp[i] % mod + dp[j] % mod) % mod;
else {
dp[i] -= 1;
dp[i] = (dp[i] % mod + dp[j] % mod) % mod;
break;
}
}
}
int res = 0;
for (int i = 0; i < n; i++) res = (res % mod + dp[i] % mod) % mod;
return res;
}

  

最新文章

  1. 用html5的canvas画布绘制贝塞尔曲线
  2. 转载jQuery图片放大插件[twiPicZoom]
  3. Linux进程状态 ( Linux Process State Codes)
  4. 一定要学会paxos算法!
  5. 高通Android平台硬件调试之Camera篇
  6. [Hibernate] - Annotations
  7. request 获取请求参数
  8. c++继承中的内存布局
  9. unity3d Human skin real time rendering plus 真实模拟人皮实时渲染 plus篇
  10. Ubuntu16.04+cuda9.0+matlab+opencv3.3+caffe服务器配置(问题汇总)
  11. day07_Tomcat服务器与http学习笔记
  12. iterm2 快捷键(转载)
  13. JavaFTP文件传输上传和下载文件
  14. 神州数码HSRP(热备份路由协议)配置
  15. 编写shell脚本kill掉占用cpu超过90%以上的程序
  16. Day18--Python--面向对象--类与类之间的关系
  17. c# JSON格式转对象
  18. C++ 提取网页内容系列之四正则
  19. unity3d-游戏实战突出重围,第四天 添加角色
  20. 怎样在winform中上传图片

热门文章

  1. [css-animation-101] 8 multiple transitions
  2. 【底层原理:深入理解计算机系统】#1 一切从&quot;hello world&quot;说起 (一)
  3. C++走向远洋——60(项目四、立体类族共有的抽象类)
  4. 创建SpringMVC项目过程
  5. shell 之 case。。。esac多分支选择
  6. 小白学 Python 数据分析(10):Pandas (九)数据运算
  7. 移动端overflow失效问题
  8. JDBC概述及编程步骤详解
  9. 关于在layui中的table checkbox 默认选中设置
  10. A. New Building for SIS Codeforce