LeetCode演算法題-Longest Uncommon Subsequence I(Java實現)
這是悅樂書的第252 次更新,第265 篇原創
01 看題和準備
今天介紹的是LeetCode演算法題中Easy級別的第119題(順位題號是521)。給定一組兩個字串,您需要找到這組兩個字串中最長的不同子序列。最長的不同子序列被定義為這些字串之一的最長子序列,並且此子序列不應該是其他字串的任何子序列。
子序列是可以通過刪除一些字元而不改變其餘元素的順序從一個序列匯出的序列。任何字串都是其自身的子序列,空字串是任何字串的子序列。輸入將是兩個字串,輸出需要是最長的不同子序列的長度。如果最長的不同子序列不存在,則返回-1。例如:
輸入:“aba”,“cdc”
輸出:3
說明:最長的不同子序列是“aba”(或“cdc”),因為“aba”是“aba”的子序列,但不是另外一個字串的子序列。
注意:
-
兩根字串的長度都不會超過100。
-
字串由a~z的字母組成。
本次解題使用的開發工具是eclipse,jdk使用的版本是1.8,環境是win7 64位系統,使用Java語言編寫和測試。
02 第一種解法
題目的意思是如果兩字串不存在最長不同子串,也就表明兩字串相等,直接返回-1即可。每個字串都有一個最長不同子串就是自身,那麼要找兩個字串的最長不同子串,也就是看誰的字串長度更長了,字串長度更長的那個字串本身就是最長不同子串。
public int findLUSlength(String a, String b) { if (a.equals(b)) { return -1; } return a.length() > b.length() ? a.length() : b.length(); }
03 第二種解法
第一種解法的最後一步,也可以使用Math的max方法來寫。
public int findLUSlength2(String a, String b) { if (a.equals(b)) { return -1; } return Math.max(a.length(), b.length()); }
04 小結
演算法專題目前已日更超過三個月,演算法題文章119 +篇,公眾號對話方塊回覆【資料結構與演算法 】、【演算法 】、【資料結構 】中的任一關鍵詞,獲取系列文章合集。
以上就是全部內容,如果大家有什麼好的解法思路、建議或者其他問題,可以下方留言交流,點贊、留言、轉發就是對我最大的回報和支援!