[LeetCode] 2068. Check Whether Two Strings are Almost Equivalent
Two strings word1
and word2
are considered almost equivalent if the differences between the frequencies of each letter from 'a'
to 'z'
between word1
and word2
is at most 3
.
Given two strings word1
and word2
, each of length n
, return true
if word1
and word2
are almost equivalent, or false
otherwise.
The frequency of a letter x
is the number of times it occurs in the string.
Example 1:
Input: word1 = "aaaa", word2 = "bccb" Output: false Explanation: There are 4 'a's in "aaaa" but 0 'a's in "bccb". The difference is 4, which is more than the allowed 3.
Example 2:
Input: word1 = "abcdeef", word2 = "abaaacc" Output: true Explanation: The differences between the frequencies of each letter in word1 and word2 are at most 3: - 'a' appears 1 time in word1 and 4 times in word2. The difference is 3. - 'b' appears 1 time in word1 and 1 time in word2. The difference is 0. - 'c' appears 1 time in word1 and 2 times in word2. The difference is 1. - 'd' appears 1 time in word1 and 0 times in word2. The difference is 1. - 'e' appears 2 times in word1 and 0 times in word2. The difference is 2. - 'f' appears 1 time in word1 and 0 times in word2. The difference is 1.
Example 3:
Input: word1 = "cccddabba", word2 = "babababab" Output: true Explanation: The differences between the frequencies of each letter in word1 and word2 are at most 3: - 'a' appears 2 times in word1 and 4 times in word2. The difference is 2. - 'b' appears 2 times in word1 and 5 times in word2. The difference is 3. - 'c' appears 3 times in word1 and 0 times in word2. The difference is 3. - 'd' appears 2 times in word1 and 0 times in word2. The difference is 2.
Constraints:
n == word1.length == word2.length
1 <= n <= 100
word1
andword2
consist only of lowercase English letters.
检查两个字符串是否几乎相等。
如果两个字符串 word1 和 word2 中从 'a' 到 'z' 每一个字母出现频率之差都 不超过 3 ,那么我们称这两个字符串 word1 和 word2 几乎相等 。
给你两个长度都为 n 的字符串 word1 和 word2 ,如果 word1 和 word2 几乎相等 ,请你返回 true ,否则返回 false 。
一个字母 x 的出现 频率 指的是它在字符串中出现的次数。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/check-whether-two-strings-are-almost-equivalent
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路是用 hashmap 记录 word1 和 word2 中每个字母的出现次数,然后比较两个单词中相同字母的出现次数,如果有两个单词中任何一个字母的出现次数的差值超过 3 则返回 false。
时间O(n)
空间O(n)
Java实现
1 class Solution { 2 public boolean checkAlmostEquivalent(String word1, String word2) { 3 int n = word1.length(); 4 int[] map1 = new int[26]; 5 int[] map2 = new int[26]; 6 for (int i = 0; i < n; i++) { 7 map1[word1.charAt(i) - 'a']++; 8 map2[word2.charAt(i) - 'a']++; 9 } 10 11 for (int i = 0; i < 26; i++) { 12 if (Math.abs(map1[i] - map2[i]) > 3) { 13 return false; 14 } 15 } 16 return true; 17 } 18 }