问题 O: 零基础学C/C++160——字符串
这道题数据量很大,字符串长度很长,需要做特殊优化。
注意点:因字符数组可能过大,很显然将不能用循环一步一步检查下去,并且运用strlen函数更有可能时间超限。
因此我们应该改变思路,并不能使用搜索。
本题可利用桶的思想,将每个字符在数组A,B中出现的次数记录下来
,并且若A数组中存在所有字母,那么就无需检查B数组中的字符
点击查看代码
/*本题可利用桶的思想,将每个字符在数组A,B中出现的次数记录下来
,并且若A数组中存在所有字母,那么就无需检查B数组中的字符*/
#include<stdio.h>
#include<string.h>
char e[1000100];
int main(void)
{
int i;
int r;
while (scanf("%s", e) != EOF)
{/*由题意得出应该是一个大字符串被#分来,故我们输入一个字符串*/
i = 0;
int c[30] = { 0 };//两个桶
int d[30] = { 0 };
while (e[i] != '#')//对A中字符进行计数
{
c[e[i] - 97]++;
i++;
}
i++;//进入到字符串B
while (e[i] != '#')//B中字符进行计数
{
d[e[i] - 97]++;
i++;
}
for (i = 0; i < 25; i++)
{
if (c[i] == 0 && d[i] > 0)//A中有该字符而B中没有
{
printf("No\n");
break;
}
}
if (i == 25)
{
printf("Yes\n");
}
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现