营销网站占用多少m空间,泰州seo网站推广,苏州seo优化公司,南京建设机械网站问题背景
给你一个下标从 0 0 0 开始的字符串数组 w o r d s words words。 如果两个字符串由相同的字符组成#xff0c;则认为这两个字符串 相似 。
例如#xff0c;“abca” 和 “cba” 相似#xff0c;因为它们都由字符 ‘a’、‘b’、‘c’ 组成。然而#xff0c;“…问题背景
给你一个下标从 0 0 0 开始的字符串数组 w o r d s words words。 如果两个字符串由相同的字符组成则认为这两个字符串 相似 。
例如“abca” 和 “cba” 相似因为它们都由字符 ‘a’、‘b’、‘c’ 组成。然而“abacba” 和 “bcfd” 不相似因为它们不是相同字符组成的。
请你找出满足字符串 w o r d s [ i ] words[i] words[i] 和 w o r d s [ j ] words[j] words[j] 相似的下标对 ( i , j ) (i, j) (i,j)并返回下标对的数目其中 0 ≤ i j ≤ w o r d s . l e n g t h − 1 0 \le i \lt j \le words.length - 1 0≤ij≤words.length−1。
数据约束 1 ≤ w o r d s . l e n g t h ≤ 100 1 \le words.length \le 100 1≤words.length≤100 1 ≤ w o r d s [ i ] . l e n g t h ≤ 100 1 \le words[i].length \le 100 1≤words[i].length≤100 w o r d s [ i ] words[i] words[i] 仅由小写英文字母组成
解题过程
想到了字符串映射和字符串哈希没想到用位运算来进行压缩存储。统计数量的做法参考 好数对数目 就可以了。
具体实现
class Solution {public int similarPairs(String[] words) {MapInteger, Integer count new HashMap();int res 0;for (String word : words) {int mask 0;for (char c : word.toCharArray()) {mask | 1 (c - a);}int cur count.getOrDefault(mask, 0);res cur;count.put(mask, cur 1);}return res;}
}