leetcode521(最長特殊序列I)--C語言實現

求:函數

給你兩個字符串,請你從這兩個字符串中找出最長的特殊序列。spa

「最長特殊序列」定義以下:該序列爲某字符串獨有的最長子序列(即不能是其餘字符串的子序列)。字符串

子序列 能夠經過刪去字符串中的某些字符實現,但不能改變剩餘字符的相對順序。空序列爲全部字符串的子序列,任何字符串爲其自身的子序列。class

輸入爲兩個字符串,輸出最長特殊序列的長度。若是不存在,則返回 -1。di

 

示例 1:co

輸入: "aba", "cdc"
輸出: 3
解釋: 最長特殊序列可爲 "aba" (或 "cdc"),二者均爲自身的子序列且不是對方的子序列。
示例 2:字符

輸入:a = "aaa", b = "bbb"
輸出:3
示例 3:return

輸入:a = "aaa", b = "aaa"
輸出:-1ab

 

解:

思路:首先判斷2個字符串是否相等,字符串相等,返回-1。若是字符串不相等,判斷長度是否相等,長度相等,返回該長度。若是長度也不等,長度更長的字符串,必定不會是長度較短的字符串的子串,它的長度即爲最大特殊序列的長度。判斷字符串相等和字符串長度,使用庫函數strcmp()和strlen()。

 

int  findLUSlength( char  * a,  char  * b){
     if (strcmp(a,b)== 0 )   return  - 1 ;
     if (strlen(a)==strlen(b))     return  strlen(a);
     return  strlen(a)>strlen(b)?strlen(a):strlen(b);
}
相關文章
相關標籤/搜索