Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PTA题解 --- A-B(C语言)

PTA题解 --- A-B(C语言)

作者头像
用户10216580
发布于 2024-03-20 06:52:45
发布于 2024-03-20 06:52:45
35000
代码可运行
举报
文章被收录于专栏:一叶知秋一叶知秋
运行总次数:0
代码可运行

今天是PTA题库解法讲解的第三天,今天我们要讲解A-B,题目如下:

要解决这个问题,可以通过以下步骤编写C语言程序:

  1. 读取字符串A和B。
  2. 创建一个标记数组,用于记录字符串B中所有字符的出现。
  3. 遍历字符串A,只有当当前字符在B中没有出现时才打印它。
  4. 输出处理后的字符串A。

这里提供C语言代码实现:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <string.h>
​
int main() {
    char A[100001], B[100001];
    int hashTable[128] = {0};  // ASCII码共有128个字符fgets(A, 100001, stdin);  // 使用fgets读取含有空格的字符串
    fgets(B, 100001, stdin);// 记录B字符串中字符出现的情况
    int lenB = strlen(B);
    for (int i = 0; i < lenB; i++) {
        hashTable[B[i]] = 1;
    }// 遍历A字符串,并打印未在B中出现的字符
    int lenA = strlen(A);
    for (int i = 0; i < lenA; i++) {
        if (!hashTable[A[i]]) { // 如果该字符未出现在B中,打印它
            putchar(A[i]);
        }
    }
    
    return 0;
}

注意:在实际环境中,fgets函数会读取整行输入,包括换行符,所以在处理字符串时可能需要将换行符去除。

以上代码的主要思路是使用哈希表来标记字符串B中出现过的字符,然后遍历字符串A,打印那些未被标记的字符。这种方法的时间复杂度是O(n),空间复杂度是O(1)(因为ASCII码字符的数量是固定的)。

提交结果:

本题通过,今天的讲解到此为止~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C语言字符串I\O
分析常用的处理字符串输入和输出的函数,以及如何结合这几个函数进行优化和设计一些新的处理字符串输入输出的函数。
CtrlX
2022/11/14
5.2K0
c语言从入门到实战——在系统学习C语言之前所需要了解的知识
本文基于VS2022,将介绍一系列的C语言常见概念,让读者对C语言有一个初步的了解,并对后续的学习做下铺垫。
鲜于言悠
2024/03/20
2970
c语言从入门到实战——在系统学习C语言之前所需要了解的知识
确定不进来看看吗?详细讲解C语言文件操作(示例分析每个函数)
C语言的文件操作其实很少用到,因为在后期工作中他们大多数都被封装好了,我们直接使用就行,但是对于一名修内功的程序员,了解更加底层的实现方式,还是很有价值的.
初阶牛
2023/05/04
8030
确定不进来看看吗?详细讲解C语言文件操作(示例分析每个函数)
C语言常见的文件操作函数总结
fopen(),这个函数很简单,也不容易忘。两个参数一是文件名或者路径,二是打开方式。
再睡一下就好
2025/06/11
2090
C语言常见的文件操作函数总结
初识C语言(上)
我们通常把计算机语言分为:解释型语言和编译型语言。 编译型语言:顾名思义是程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运用时不需要重新翻译,直接使用编译的结果即可。如:C、C++、Delphi等,现阶段因明确知道C语言为编译型语言。 优点及缺点:程序执行效率高,但依赖于编译器,跨平台性较差。
四念处茫茫
2025/01/24
1790
初识C语言(上)
【C语言篇】字符和字符串以及内存函数的详细介绍与模拟实现(上篇)
当然可以用scanf和printf输入输出,这里在之前【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)已经讲过了,这里就不再赘述,主要介绍只针对字符的函数
半截诗
2024/10/09
2430
【C语言篇】字符和字符串以及内存函数的详细介绍与模拟实现(上篇)
PTA 练习 L1-011 A-B (20 分)
本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。
Lokinli
2023/03/09
2890
我与C语言二周目邂逅vlog—1.熟悉而又陌生-初识C语言
如题,在下是一名大二学生,希望改过自新,重新学习C语言(同时也在学习数据结构,希望各位大佬多多指教)
hope kc
2024/09/23
1810
我与C语言二周目邂逅vlog—1.熟悉而又陌生-初识C语言
C语言常用的字符串函数及案例
ASCII C把这些函数原型放在string.h头文件中,其中最常用的有strlen()、strcat()、strcmp()、strncmp()、strcpy()、strncpy()和放在stdio.h中的springf()
CtrlX
2023/03/21
1.1K0
C语言学习系列-->第一弹【初识C语言】
南桥
2024/01/26
1860
C语言学习系列-->第一弹【初识C语言】
第1讲:C语言常见概念
目前已知已经有上千种计算机语言,人们是通过计算机语言写的程序,给计算机下达指令,让计算机工作的(比如excel表格帮我们统计一些事情,教务系统对同学们的信息、作业进行管理)。
用户11290648
2024/09/25
2440
第1讲:C语言常见概念
【C语言】常见的C语言概念
那人和计算机是怎么交流的呢? 使用计算机语言。 目前已知已经有上千种计算机语言,人们们是通过计算机语言写的程序,给计算机下达指令,让计算机工作的。 C语言就是众多计算机语言中的⼀种,当然C++/Java/Go/Python都是计算机语言。
zxctscl
2024/09/20
2.1K0
【C语言】常见的C语言概念
【C/C++】C语言特性总结
已经有大约半年的时间没有碰C语言了,当时学习的时候记录了很多的笔记,但是都是特别混乱,后悔那个时候,不懂得写博客,这里凭借记忆和零零散散的笔记记录,尝试系统性地复习一下C语言。
用户7886150
2021/02/13
1.2K0
10min快速回顾C++语法(五)字符串专题
⭐写在前面的话:本系列文章旨在短时间内回顾C/C++语法中的重点与易错点,巩固算法竞赛与写题过程中常用的语法知识,精准地解决学过但有遗忘的情况,为算法刷题打下坚实的基础。
timerring
2022/09/23
1K0
pta系列之古风排版
这个题的思路大概就是,我们得到有几行之后,输入字符串之后,需要知道一共需要几列,然后算出一共几列,然后记录一下,然后按题目中的情况去存入字符数组,注意,这里我们是要用二维数组,不明白二维数组的,可以去前面看一下这篇文章,关于C语言数组的认识(1)-CSDN博客
用户11036582
2024/03/21
1780
pta系列之古风排版
C语言常见概念
人与人之间通过汉语,英语,德语相互交流,这些称为“自然语言”。人与计算机交流的语言则可称为“计算机语言”。
云泽808
2025/08/01
1790
C语言 —— 指尖跃迁 刻印永恒 - 文件操作
我们从键盘输入数据,向屏幕上输出数据,并没有打开流呢?那是因为C语言程序在启动的时候,默认打开了3个流:
迷迭所归处
2025/04/17
3010
C语言 —— 指尖跃迁 刻印永恒 - 文件操作
C语言基础语法
风中的云彩
2024/11/07
2250
PTA题解 --- 剪切粘贴(C语言)
此代码首先定义了一个原始字符串和一个剪贴板字符串来存储剪切的内容。对于每次操作,首先执行剪切操作,然后根据提供的前后字符串确定粘贴位置,进行粘贴操作。最后输出编辑后的字符串。注意,代码考虑了当找不到匹配的粘贴位置时,直接在字符串末尾进行粘贴的情况。
用户10216580
2024/03/24
3550
PTA题解 --- 剪切粘贴(C语言)
C语言字符串从入门到进阶指南
 借助“正则表达式”, 获取带有空格的字符串:scanf("%[^\n]", str);
莫浅子
2022/11/18
6830
相关推荐
C语言字符串I\O
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验