求:函數
給你兩個字符串,請你從這兩個字符串中找出最長的特殊序列。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);
}