开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第26天,点击查看活动详情
前言
小白算法比较菜,希望能激励我每日更新,从leetcode第一题开始,2022年目标2000分,现在1995!!
力扣第 324 场周赛-力扣
第 324 场周赛
掉分啊!!! 打比赛的只有4000来人了
6265. 统计相似字符串对的数目
给你一个下标从 0 开始的字符串数组 words 。
如果两个字符串由相同的字符组成,则认为这两个字符串 相似 。
例如,"abca" 和 "cba" 相似,因为它们都由字符 'a'、'b'、'c' 组成。
然而,"abacba" 和 "bcfd" 不相似,因为它们不是相同字符组成的。
请你找出满足字符串 words[i] 和 words[j] 相似的下标对 (i, j) ,并返回下标对的数目,其中 0 <= i < j <= word.length - 1 。
示例1:
输入:words = ["aba","aabb","abcd","bac","aabc"]
输出:2
解释:共有 2 对满足条件:
- i = 0 且 j = 1 :words[0] 和 words[1] 只由字符 'a' 和 'b' 组成。
- i = 3 且 j = 4 :words[3] 和 words[4] 只由字符 'a'、'b' 和 'c' 。
示例 2:
输入:words = ["aabb","ab","ba"]
输出:3
解释:共有 3 对满足条件:
- i = 0 且 j = 1 :words[0] 和 words[1] 只由字符 'a' 和 'b' 组成。
- i = 0 且 j = 2 :words[0] 和 words[2] 只由字符 'a' 和 'b' 组成。
- i = 1 且 j = 2 :words[1] 和 words[2] 只由字符 'a' 和 'b' 组成。
示例 3:
输入: words = ["nba","cba","dba"]
输出: 0
解释: 不存在满足条件的下标对,返回 0 。
提示:
1 <= words.length <= 1001 <= words[i].length <= 100words[i]仅由小写英文字母组成
代码
第一题还是经典的读题题。
长度只有100,直接暴力,用长度为的26的数字做存储,进行对比。
class Solution {
public int similarPairs(String[] words) {
int res = 0;
int[][] dp = new int[words.length][26];
for(int i = 0; i < words.length; i++) {
for(int j = 0; j < words[i].length(); j++) {
int c = words[i].charAt(j) - 'a';
dp[i][c] = 1;
}
}
for(int i = 0; i < words.length; i++) {
for(int j = i + 1; j < words.length; j++) {
boolean flag = true;
for(int k = 0; k < 26; k++) {
if(dp[i][k]!=dp[j][k]) {
flag = false;
break;
}
}
if(flag) {
res++;
}
}
}
return res;
}
}
3.结束
大早上爬起来掉分,第四题太简单了,第三题又一直考虑不充分,有几个过不了,掉分咯~ 今年上2000分有点难度。