码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode - interleaving string

时间:2014-07-10 21:15:16      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:interleaving string   leetcode   

题目描述:

Given s1s2s3, find whether s3 is formed by the interleaving of s1 and s2.

For example,
Given:
s1 = "aabcc",
s2 = "dbbca",

When s3 = "aadbbcbcac", return true.
When s3 = "aadbbbaccc", return false.

最直观的做法,定义一个三维的状态数组 f[ k ] [ i ] [ j ] 表示s3[0 ... k-1] 是 s1[0 ... i ] 和 s2[0 ... j ]交错而成。

那么状态式定义为:

f[ k ] [ i ] [ j ]     =    ( f [ k-1 ] [i ] [ j - 1]  && s2[ j-1] == s3  [ k -1]  // s2的第j-1个字符与s3的第k-1个字符匹配。

或者是            =    ( f [ k-1 ] [ i-1 ] [ j ]  && s1 [ i-1] == s3  [ k -1]  // s1的第i-1个字符与s3的第k-1个字符匹配。

两者只要有一个满足条件即可。

代码如下:

Version 1:  时间复杂度 O(n^3),空间复杂度 O(n^3).Time : ~200ms


Version 2:  时间复杂度 O(n^2),空间复杂度 O(n^2).Time :~ 4ms


Version 3:  时间复杂度 O(n^2),空间复杂度 O(n). Time :~ 4ms

使用滚动数组来解决:




leetcode - interleaving string,布布扣,bubuko.com

leetcode - interleaving string

标签:interleaving string   leetcode   

原文地址:http://blog.csdn.net/xuqingict/article/details/37612171

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!