LeetCode:Interleaving String
来源:互联网 发布:社交网络的优缺点 编辑:程序博客网 时间:2024/05/01 15:30
跟最大公共子序列思路一样,动态规划解决。
我使用了Map保存动态规划结果。
package leetcode;import java.util.HashMap;import java.util.Map;public class InterleavingString {public static void main(String[] args) {InterleavingString s = new InterleavingString();boolean b = s.isInterleave("ab", "ab", "bbaa");System.out.println(b);}private String s1;private String s2;private String s3;private Map<String, Boolean> result = new HashMap<String, Boolean>();public boolean isInterleave(String s1, String s2, String s3) {if (s1 == null) {s1 = "";}if (s2 == null) {s2 = "";}if (s3 == null) {s3 = "";} if (s1.length() + s2.length() != s3.length()) { return false; } this.s1 = s1; this.s2 = s2; this.s3 = s3; result.clear(); return isInterleave(s1.length(), s2.length()); }private boolean isInterleave(int len1, int len2) {if (len1 == 0) {return this.s2.substring(0, len2).equals(this.s3.substring(0, len2));}if (len2 == 0) {return this.s1.substring(0, len1).equals(this.s3.substring(0, len1));}String key = buildKey(len1, len2);Boolean value = result.get(key);if (value != null) {return value.booleanValue();} else {boolean r;char c1 = this.s1.charAt(len1 - 1);char c2 = this.s2.charAt(len2 - 1);char c3 = this.s3.charAt(len1 + len2 - 1);boolean r1 = false;if (c1 == c3) {r1 = isInterleave(len1 - 1, len2); }if (r1) {r = true;} else {if (c2 == c3) {r1 = isInterleave(len1, len2 - 1);if (r1) {r = true;} else {r = false;}} else {r = false;}}result.put(key, r);return r;}}private String buildKey(int len1, int len2) {StringBuffer sb = new StringBuffer();sb.append(len1);sb.append('-');sb.append(len2);return sb.toString();}}
- LeetCode: Interleaving String
- LeetCode Interleaving String
- LeetCode: Interleaving String
- [Leetcode] Interleaving String
- [LeetCode] Interleaving String
- leetcode 68: Interleaving String
- [Leetcode] Interleaving String
- LeetCode - Interleaving String
- [LeetCode]Interleaving String
- LeetCode: Interleaving String
- Leetcode: Interleaving String
- [Leetcode]Interleaving String
- Leetcode: Interleaving String
- LeetCode:Interleaving String
- LeetCode-Interleaving String
- [leetcode] Interleaving String@DP
- LeetCode:Interleaving String
- LeetCode - Interleaving String
- NYOJ 题目161 取石子(四) 威佐夫博奕(Wythoff Game)
- 小for的Cocos2d-x学习笔记与感悟5之拖动(Touch)事件
- Android设置屏幕自动转屏
- 各大推荐引擎资料汇总
- 黑马程序员——单例模式学习笔记
- LeetCode:Interleaving String
- 推荐系统:总体介绍、推荐算法、性能比较
- set与map容器
- 推荐系统算法总结
- 推荐系统五大问题
- CentOS 6中vsFTPd安装及配置
- NYOJ题目358 取石子(五)hdu题目2516 取石子游戏 Fibonacci’s Game(斐波那契博弈)
- mysql新建数据库和MyEclipse字符集设置
- ACM暑假培训总结