leetcode周赛297记录

在这里插入图片描述
在这里插入图片描述

思路

  • 注意小写英文字母,枚举即可
  • c n t [ i ] [ j ] cnt[i][j] cnt[i][j]-将字母i变为字母j后不在原始字符串中的字符串数目
  • 每个字符串上,枚举变化后的首字母
class Solution {
public:
    long long distinctNames(vector<string>& ideas) {
        long long cnt[26][26];
		for(int i = 0;i<26;i++) memset(cnt[i],0,26*sizeof(long long));
		unordered_set<string> c;
		for(string& s:ideas) c.insert(s);
		for(string&s:ideas)
		{
			char f = s[0];
			for(char d = 'a';d<='z';d++)
			{
				if(d!=f && c.find(d+s.substr(1)) == c.end()) cnt[f - 'a'][d - 'a']++;
			}
		}
		long long ans = 0;
		for(string& p : ideas)
		{
			char f = p[0];
			for(char d = 'a';d<='z';d++)
			{
				if(c.find(d+p.substr(1)) == c.end())  //可以替换
				ans+= cnt[d - 'a'][f - 'a'];
			}
		}
		return ans;
    }
};
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值