A1092(20)

本文深入探讨了使用哈希数组进行字符串匹配的算法实现,重点讲解了如何通过整型哈希值来判断两个字符串中字符的匹配情况,避免了布尔型哈希可能带来的信息丢失问题。文章提供了完整的C++代码示例,演示了如何读取两个字符串,通过哈希数组统计第一个字符串中字符的出现次数,然后检查第二个字符串中的字符是否都能在第一个字符串中找到匹配。如果所有字符都能匹配,则输出肯定结果及匹配的字符数量;反之,则输出否定结果及无法匹配的字符数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意珠子数量是否足够,所以hash不能用bool型要用int型
代码如下

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int maxn=1010;
int main()
{
    char str1[maxn];
    char str2[maxn];
    int hashnum[128]={0};
    cin.getline(str1,maxn);
    cin.getline(str2,maxn);
    int len1=strlen(str1);
    int len2=strlen(str2);
    for (int i=0;i<len1;i++)
    {
         hashnum[str1[i]]++;
	}
	int num=0,k=0;
	for (int i=0;i<len2;i++)
    {
         if (hashnum[str2[i]]==0)
             num++; 
         else
         {
         	hashnum[str2[i]]--;
         	k++;
		 }
	}
	if (k==len2)
	printf("Yes %d",len1-k);
	else
	printf("No %d",num);
}
### 查看 `apt-key list` 中存储的密钥及其详细信息 在 Linux 系统中,`apt-key list` 命令用于显示当前系统中已安装的所有 APT 软件源 GPG 密钥。这些密钥主要用于验证从远程仓库下载的软件包的真实性。以下是关于 Docker、Ubuntu CD Image 和 Ubuntu Archive 相关密钥的详细说明: #### 1. Docker Release (CE deb) 密钥 Docker 提供了一个官方 GPG 密钥,用于签名其 Debian/Ubuntu 软件包。该密钥的信息如下: - **公钥算法**: RSA 4096位 - **创建日期**: 2017-02-22 - **密钥指纹**: ``` 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 ``` - **用途**: [SCEA] 表示此密钥可用于签名、认证、加密和身份验证。 - **UID**: Docker Release (CE deb) <docker@docker.com> 此密钥可通过以下方式添加至系统的信任密钥环[^2]: ```bash curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg ``` #### 2. Ubuntu CD Image 自动签名密钥 (2012) 这是由 Canonical 维护的一个 GPG 密钥,专门用于签署 Ubuntu ISO 镜像文件和其他相关内容。具体信息如下: - **公钥算法**: RSA 4096位 - **创建日期**: 2012-05-11 - **密钥指纹**: ``` 8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092 ``` - **用途**: [SC] 表示此密钥仅限于签名和认证。 - **UID**: Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com> 此密钥通常预装在 Ubuntu 系统中,无需手动导入。 #### 3. Ubuntu Archive 自动签名密钥 (2018) Canonical 还提供了一把 GPG 密钥,用于签署 Ubuntu 存档库中的所有软件包。相关信息如下: - **公钥算法**: RSA 4096位 - **创建日期**: 2018-09-17 - **密钥指纹**: ``` F6EC B376 2474 EDA9 D21B 7022 8719 20D1 991B C93C ``` - **用途**: [SC] 表明此密钥适用于签名和认证。 - **UID**: Ubuntu Archive Automatic Signing Key (2018) <ftpmaster@ubuntu.com> 同样,这把密钥也默认存在于大多数 Ubuntu 发行版中。 --- ### 使用 `apt-key list` 输出样例 当运行 `apt-key list` 命令时,输出类似于以下内容: ```plaintext /etc/apt/trusted.gpg -------------------- pub rsa4096 2017-02-22 [SCEA] 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid [ unknown ] Docker Release (CE deb) <docker@docker.com> sub rsa4096 2017-02-22 [S] /etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg ------------------------------------------------------ pub rsa4096 2012-05-11 [SC] 8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092 uid [ unknown ] Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com> /etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg ------------------------------------------------------ pub rsa4096 2018-09-17 [SC] F6EC B376 2474 EDA9 D21B 7022 8719 20D1 991B C93C uid [ unknown ] Ubuntu Archive Automatic Signing Key (2018) <ftpmaster@ubuntu.com> ``` 每一段描述分别对应不同的 GPG 密钥,其中包含了密钥类型 (`rsa4096`)、创建时间、权限标志 ([SCEA]/[SC])、以及 UID 字段等重要细节[^1]。 --- ### 注意事项 由于 `apt-key` 已被弃用,推荐将 GPG 密钥直接放置于 `/etc/apt/trusted.gpg.d/` 下,并通过 `signed-by` 参数关联到对应的 APT 源配置文件中[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值