如果兩個字符串 word1 和 word2 中從 'a' 到 'z' 每一個字母出現(xiàn)頻率之差都 不超過 3 ,那么我們稱這兩個字符串 word1 和 word2 幾乎相等 。
給你兩個長度都為 n 的字符串 word1 和 word2 ,如果 word1 和 word2 幾乎相等 ,請你返回 true ,否則返回 false 。
一個字母 x 的出現(xiàn) 頻率 指的是它在字符串中出現(xiàn)的次數(shù)。
示例 1:
輸入:word1 = "aaaa", word2 = "bccb"
輸出:false
解釋:字符串 "aaaa" 中有 4 個 'a' ,但是 "bccb" 中有 0 個 'a' 。
兩者之差為 4 ,大于上限 3 。
示例 2:
輸入:word1 = "abcdeef", word2 = "abaaacc"
輸出:true
解釋:word1 和 word2 中每個字母出現(xiàn)頻率之差至多為 3 :
- 'a' 在 word1 中出現(xiàn)了 1 次,在 word2 中出現(xiàn)了 4 次,差為 3 。
- 'b' 在 word1 中出現(xiàn)了 1 次,在 word2 中出現(xiàn)了 1 次,差為 0 。
- 'c' 在 word1 中出現(xiàn)了 1 次,在 word2 中出現(xiàn)了 2 次,差為 1 。
- 'd' 在 word1 中出現(xiàn)了 1 次,在 word2 中出現(xiàn)了 0 次,差為 1 。
- 'e' 在 word1 中出現(xiàn)了 2 次,在 word2 中出現(xiàn)了 0 次,差為 2 。
- 'f' 在 word1 中出現(xiàn)了 1 次,在 word2 中出現(xiàn)了 0 次,差為 1 。
示例 3:
輸入:word1 = "cccddabba", word2 = "babababab"
輸出:true
解釋:word1 和 word2 中每個字母出現(xiàn)頻率之差至多為 3 :
- 'a' 在 word1 中出現(xiàn)了 2 次,在 word2 中出現(xiàn)了 4 次,差為 2 。
- 'b' 在 word1 中出現(xiàn)了 2 次,在 word2 中出現(xiàn)了 5 次,差為 3 。
- 'c' 在 word1 中出現(xiàn)了 3 次,在 word2 中出現(xiàn)了 0 次,差為 3 。
- 'd' 在 word1 中出現(xiàn)了 2 次,在 word2 中出現(xiàn)了 0 次,差為 2 。
java代碼:
class Solution {
public boolean checkAlmostEquivalent(String word1, String word2) {
// 數(shù)據(jù)量有限 用數(shù)組代替哈希表就行
int[] hash = new int[26];
for(char w1 : word1.toCharArray())
hash[w1-'a']++;
for(char w2 : word2.toCharArray())
hash[w2-'a']--;
for(int count : hash)
if(Math.abs(count) > 3)
return false;
return true;
}
}