leetcode-97
Leetcode 97题 交错字符串
给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。
1
2
3
4 示例 1:
输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"
输出: true
1
2
3
4 示例 2:
输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"
输出: false
题解
这个问题我开始想用双指针,但是出来的报错,后来发现有些例子的结果是错误的,因为双指针说白了就是个贪心的策略。
后来参考了leetcode的题解,发现用动态规划能获得正确的解,不会陷入贪心的错误解中。
我们设f(i,j)是第一个字符串的前i位和第二个字符串的前j位能不能交错组合成第三个字符串的前i+j位。
若s3[i+j]==s1[i],则f(i,j)=f(i-1,j)。
若s3[i+j]==s2[j],则f(i,j)=f(i,j-1)。
初始状态f(0,0)=true;
如果某一个状态下s3[i+j]!=s1[i]&&s3[i+j]!=s2[j],则有不同的字符串不可能组合成目标字符串。
代码如下
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WhatGhost!