392. Is Subsequence
生活随笔
收集整理的這篇文章主要介紹了
392. Is Subsequence
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
寫得好的解題思路鏈接:url1 url2(動態規劃寫的比較好)
輸入:兩個字符串s和t,t可能會很長
輸出:s是否是t的子序列。
規則:字符串子序列的定義是:通過刪除字符串t的部分字符但是不能改變字符相對位置,能夠得到字符串s,則s是t的一個子序列。
直觀分析:就是挨個判斷s中的字符串是否在t中出現。要求出現位置是遞增的。
動態規劃思路:先做暴力搜索。t需要刪除部分字符成為s。當t[i]=s[i]的時候可以選擇使用t[i]或者不使用t[i]。
public boolean isSubsequence(String s, String t) {this.s = s;this.t = t;return f(0,0);}private boolean f(int i,int j){if(i== s.length()){return true;}if(j == t.length()){return false;}if(s.charAt(i) == t.charAt(j)){if(f(i+1,j+1)) return true;}return f(i,j+1);}設置數組dp[i][j],dp[i][j]=true表示子串s[0,i]是子串t[0,j]的一個子序列。
dp[i][j] = dp[i-1][j-1] 如果s[i]=t[j]。
dp[i][j] = dp[i][j-1] 如果s[i]!=t[j]。
當然空間還可以進一步優化
總結
以上是生活随笔為你收集整理的392. Is Subsequence的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用WebDriver遇到的那些坑
- 下一篇: Max Sum 杭电 1003