修改 0392.判断子序列.md Go二维DP格式,并增加Go一维DP解法

修改 0392.判断子序列.md Go二维DP格式,并增加Go一维DP解法
This commit is contained in:
ShuangmingMa
2023-10-08 15:05:51 +08:00
committed by GitHub
parent 2d57993364
commit 8973967dd1

View File

@ -240,26 +240,45 @@ function isSubsequence(s: string, t: string): boolean {
### Go ### Go
二维DP
```go ```go
func isSubsequence(s string, t string) bool { func isSubsequence(s string, t string) bool {
dp := make([][]int,len(s)+1) dp := make([][]int, len(s) + 1)
for i:=0;i<len(dp);i++{ for i := 0; i < len(dp); i ++{
dp[i] = make([]int,len(t)+1) dp[i] = make([]int, len(t) + 1)
} }
for i:=1;i<len(dp);i++{ for i := 1; i < len(dp); i ++{
for j:=1;j<len(dp[i]);j++{ for j := 1; j < len(dp[i]); j ++{
if s[i-1] == t[j-1]{ if s[i - 1] == t[j-1] {
dp[i][j] = dp[i-1][j-1] +1 dp[i][j] = dp[i - 1][j - 1] +1
}else{ }else{
dp[i][j] = dp[i][j-1] dp[i][j] = dp[i][j - 1]
} }
} }
} }
return dp[len(s)][len(t)]==len(s) return dp[len(s)][len(t)] == len(s)
} }
``` ```
Rust 一维DP
```go
func isSubsequence(s string, t string) bool {
dp := make([]int, len(s) + 1)
for i := 1; i <= len(t); i ++ {
for j := len(s); j >= 1; j -- {
if t[i - 1] == s[j - 1] {
dp[j] = dp[j - 1] + 1
}
}
}
return dp[len(s)] == len(s)
}
```
### Rust
```rust ```rust
impl Solution { impl Solution {