LeetCode 特殊等價字串

2021-09-24 11:48:40 字數 2456 閱讀 4622

你將得到乙個字串陣列 a。

如果經過任意次數的移動,s == t,那麼兩個字串 s 和 t 是特殊等價的。

一次移動包括選擇兩個索引 i 和 j,且 i % 2 == j % 2,交換 s[j] 和 s [i]。

現在規定,a 中的特殊等價字串組是 a 的非空子集 s,這樣不在 s 中的任何字串與 s 中的任何字串都不是特殊等價的。

返回 a 中特殊等價字串組的數量。

示例 1:

輸入:["a","b","c","a","c","c"]

輸出:3

解釋:3 組 ["a","a"],["b"],["c","c","c"]

示例 2:

輸入:["aa","bb","ab","ba"]

輸出:4

解釋:4 組 ["aa"],["bb"],["ab"],["ba"]

示例 3:

輸入:["abc","acb","bac","bca","cab","cba"]

輸出:3

解釋:3 組 ["abc","cba"],["acb","bca"],["bac","cab"]

示例 4:

輸入:["abcd","cdab","adcb","cbad"]

輸出:1

解釋:1 組 ["abcd","cdab","adcb","cbad"]

1 <= a.length <= 1000

1 <= a[i].length <= 20

所有 a[i] 都具有相同的長度。

所有 a[i] 都只由小寫字母組成。

思路分

析:\color思路分析:

思路分析

:由於一次移動包括選擇兩個索引 i 和 j,且 i % 2 == j % 2,交換 s[j] 和 s [i],即奇數下標只能與另外的奇數下標進行交換,偶數下標只能與另外的偶數下標進行交換。

並且由於交換是任意的,所以如果兩個字串的奇數、偶數下標對應的字串內容相同,則經過交換必定能相等。

所以判斷兩個字串s、t是否是特殊等價字串,我們需要取出s、t中所以奇數下標對應的字元,判斷兩個子字串是否內容一致,取出s、t中所以偶數下標對應的字元,判斷兩個子字串是否內容一致。

class

solution

}sort

(onestri.

begin()

, onestri.

end())

;//進行公升序排序

sort

(twostri.

begin()

, twostri.

end())

;//在剩餘的字串中尋找與s[i]特殊等價的字串

for(

int j = i +

1; j < asize;

++j)

}sort

(onestrj.

begin()

, onestrj.

end())

;//進行公升序排序

sort

(twostrj.

begin()

, twostrj.

end())

;//如果偶數、奇數字元組相等,則時特殊等價字串

時間複雜度在o(m * n2)(m為字串長度,n為陣列大小)級別。。。

演算法優化:

由上面的思路不難發現同乙個組中的奇數、偶數字元子串排序後的結果都一致,所以我們只需要計算字串奇數、偶數字元子串排序後的種數。

class

solution

}sort

(onestr.

begin()

, onestr.

end())

;//進行公升序排序

sort

(twostr.

begin()

, twostr.

end())

; myset.

insert

(onestr +

" "+ twostr)

;//每個字串組的特徵

}return myset.

size()

;//特徵字元對個數}}

leetcode 893 特殊等價字串組

題目分析 這道題的題目真的難以理解?如果經過任意次數的移動,s t,那麼兩個字串s和t是特殊等價的。i.e.找所有字串,所含字母一樣的字串。一次移動包括選擇兩個索引i和j,且i 2 j 2,並且交換s j 和s i i.e.找其中奇數字一樣的字串 或者偶數字 class solution objec...

leetcode 893 特殊等價字串組

題目 你將得到乙個字串陣列 a。如果經過任意次數的移動,s t,那麼兩個字串 s 和 t 是特殊等價的。一次移動包括選擇兩個索引 i 和 j,且 i 2 j 2,交換 s j 和 s i 現在規定,a 中的特殊等價字串組是 a 的非空子集 s,這樣不在 s 中的任何字串與 s 中的任何字串都不是特殊...

LeetCode 893 特殊等價字串組

題目描述 你將得到乙個字串陣列 a。如果經過任意次數的移動,s t,那麼兩個字串 s 和 t 是特殊等價的。一次移動包括選擇兩個索引 i 和 j,且 i 2 j 2,交換 s j 和 s i 現在規定,a 中的特殊等價字串組是 a 的非空子集 s,這樣不在 s 中的任何字串與 s 中的任何字串都不是...