LeetCode 521. 最長特殊序列 Ⅰ(C、C++、python)
阿新 • • 發佈:2018-11-25
給定兩個字串,你需要從這兩個字串中找出最長的特殊序列。最長特殊序列定義如下:該序列為某字串獨有的最長子序列(即不能是其他字串的子序列)。
子序列可以通過刪去字串中的某些字元實現,但不能改變剩餘字元的相對順序。空序列為所有字串的子序列,任何字串為其自身的子序列。
輸入為兩個字串,輸出最長特殊序列的長度。如果不存在,則返回 -1。
示例 :
輸入: "aba", "cdc" 輸出: 3 解析: 最長特殊序列可為 "aba" (或 "cdc")
說明:
兩個字串長度均小於100。
字串中的字元僅含有 'a'~'z'。
C
int findLUSlength(char* a, char* b) { int m=strlen(a); int n=strlen(b); int res; if(m!=n) { res=m>n?m:n; } else { int i; for(i=0;i<m;i++) { if(a[i]!=b[i]) { res=m; break; } } if(m==i) { res=-1; } } return res; }
C++
class Solution { public: int findLUSlength(string a, string b) { int m=a.length(); int n=b.length(); int res; if(m!=n) { res=max(m,n); } else { if(a==b) { res=-1; } else { res=m; } } return res; } };
python
class Solution: def findLUSlength(self, a, b): """ :type a: str :type b: str :rtype: int """ m=len(a) n=len(b) if m!=n: res=max(m,n) else: if a==b: res=-1 else: res=m return res