7-12 十六进制数字判断(is_hex)---PTA实验C++

一、题目描述

本题的任务是编写函数来判断字符是否可作为十六进制数字

// 这这这也太水了吧?十六进制数字就是[0-9A-Fa-f]嘛。

输入规格
  • 输入由多组数据构成。
    • 每组数据开头有一个非负整数N表示后续数据的行数,然后换行。
    • 之后有N行字符串,请整行读入,并统计字符总数、可作为十六进制数字的字符数
  • N=0时表示输入结束,该组无需处理。
  • 本题考察性能:总字符数可能多达几十M。
输出规格
  • 每组数据输出字符总数、可作为十六进制数字的字符数,间隔一个空格,然后换行。
样例输入
3
0123456789
ABCDEF
abcdefZ
1
:)
0
样例输出
23 22
2 0
样例解释
  • 第1组有3行,共23个字符,能作为十六进制数字的有22个。
  • 第2组有1行,共2个字符,能作为十六进制数字的有0个。
  • 最后的0表示结束,无需处理。
参考思路()

这是个基础的工具函数,所以要尽量快。有几种实现方法:

  • 条件判断组合。条件共分3段,判断逻辑的写法对性能有影响吗?
    • 如果得知使用场合是处理美国人或中国人开发的代码,有何针对性的优化?
  • 查表法:用字符编码作为下标访问标志数组bool flag[256];
  • 用C/C++的库函数isxdigit(int),注意库函数的声明和返回类型的区别。
  • 正则表达式功能强大,但对本题太慢了。
参考代码
#include <iostream>
using namespace std;

inline bool is_hex(char c){ // 被高频调用的小函数适合内联。
  return false; // TODO
}

int main(){
  ios::sync_with_stdio(false); // 这两行能极大加速C++的输入性能。
  cin.tie(nullptr);            // 代价是不能混用scanf/printf。
  for(int n; cin >> n, cin.get(), n > 0;){
    int t = 0, h = 0;
    for(string s; n--;){
      getline(cin, s);
      t += s.size();
      for(char c : s){
        if(is_hex(c)){
          ++h;
        }
      }
    }
    cout << t << ' ' << h << endl;
  }
}

二、完整代码实现C++

#include <iostream>
using namespace std;

inline bool is_hex(char c){ // 被高频调用的小函数适合内联。
if((c>='0'&&c<='9')||(c>='a'&&c<='f')||(c>='A'&&c<='F')){
    return true;
}else{
return false; // TODO
}
  
}

int main(){
  ios::sync_with_stdio(false); // 这两行能极大加速C++的输入性能。
  cin.tie(nullptr);            // 代价是不能混用scanf/printf。
  for(int n; cin >> n, cin.get(), n > 0;){
    int t = 0, h = 0;
    for(string s; n--;){
      getline(cin, s);
      t += s.size();
      for(char c : s){
        if(is_hex(c)){
          ++h;
        }
      }
    }
    cout << t << ' ' << h << endl;
  }
}

三、测评详情

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/663585.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Unity Shader入门精要 第12章】屏幕后处理效果(一)

1. 原理和过程 屏幕后处理是绑定摄像机的&#xff0c;通过抓取当前摄像机渲染的图像作为 SrcTextrue&#xff0c;然后按需依次调用处理接口&#xff0c;对 SrcTexture 进行处理&#xff0c;最后将处理完成的 DstTexture 显示到屏幕上&#xff0c;整个过程的调度通过 C# 脚本完…

上弦外媒新闻发稿:2024年度国外主流新闻媒体和海外媒体软文分发平台有哪些?

2024年度主流海外媒体新闻发稿和海外媒体软文分发平台有很多&#xff0c;下面是一些常见的和广受认可的平台&#xff1a; 主流新闻媒体 CNN - 美国知名新闻网络&#xff0c;覆盖广泛的国际新闻。BBC - 英国广播公司&#xff0c;提供全球新闻和深入报道。纽约时报 - 美国主流报…

解决docker容器: bash: ping: command not found, 并制作镜像

一. 出现原因 从 dockerhub 拉下来的镜像都是最轻量级的, 不会安装各种工具, 所以使用 ping, vim 等命令, 会出现 command not found 二. 解决方式 2.1 安装工具包 进入到一个正在运行的容器内部, 执行命令: apt-get update 之后会发现, 容器正在更新软件包, 不过最终会由…

四川汇聚荣聚荣科技有限公司在市场评价好吗?

随着科技行业的迅猛发展&#xff0c;越来越多的科技公司如雨后春笋般涌现&#xff0c;其中不乏一些优秀的企业。四川汇聚荣聚荣科技有限公司便是其中的一员。那么&#xff0c;这家公司在市场上的评价如何呢?接下来&#xff0c;我们将从四个方面进行详细的阐述。 一、公司概况四…

画图工具帮助工作

processon的画图工具 https://www.processon.com/ PlantUML 支持的图 时序图 时序图的语法和功能PlantUML时序图的语法&#xff1a;你可以有几种类型的参与者&#xff08;演员等其他角色&#xff09;、箭头、备注、分组...改变字体和颜色也是可行的。https://plantuml.com/z…

Find My割草机|苹果Find My技术与割草机结合,智能防丢,全球定位

割草机是一种用于修剪草坪、植被等的机械工具&#xff0c;它是由刀盘、发动机、行走轮、行走机构、刀片、扶手、控制部分组成。效率比人工锄草提高8至10倍&#xff0c;伤苗率低&#xff0c;除苗清洁率高。节省了除草工人的作业时间&#xff0c;减少了大量的人力资源。在畜牧业机…

git使用流程与规范

原文网址&#xff1a;git代码提交流程与规范-CSDN博客 简介 本文git提交流程与规范是宝贵靠谱的经验&#xff0c;它能解决如下问题&#xff1a; 分支差距过大&#xff0c;导致合代码无数的冲突合完代码后发现代码丢失分支不清晰&#xff0c;无法追溯问题合代码耗时很长&…

PDF盖骑缝章

在PDF文件上加盖骑缝章&#xff0c;您可以采取以下几种方法之一&#xff1a; 使用Adobe Acrobat&#xff1a; 打开Adobe Acrobat软件&#xff0c;加载PDF文件。在工具栏选择“工具”选项&#xff0c;找到“骑缝章”或“印章”工具。选择或上传您的骑缝章图片&#xff0c;将其放…

DataCube 漏洞小结

在这里分享一下通过拖取 DataCube 代码审计后发现的一些漏洞&#xff0c;包括前台的文件上传&#xff0c;信息泄露出账号密码&#xff0c;后台的文件上传。当然还有部分 SQL 注入漏洞&#xff0c;因为 DataCube 采用的是 SQLite 的数据库&#xff0c;所以SQL 注入相对来说显得就…

tomcat-请求url初始化

tomcat启动时会调用Lifecycle的start()方法&#xff0c;MapperListener.java中的方法startInternal()会被调用&#xff0c;此时开始了请求url映射到容器的初始化之路。首先看下private final Mapper mapper;属性&#xff0c;这个属性包含了请求url到容器的所有映射关系&#xf…

珠宝首饰AR虚拟3D试戴增强企业商品营销效果

在西安这座古老与现代交织的城市中&#xff0c;VRAR软件开发公司相比其他城市也略多一些&#xff0c;作为专业的西安AR软件开发公司&#xff0c;我们正凭借着前沿的AR增强现实/VR虚拟现实技术&#xff0c;为客户打造独一无二的互动体验。 专业团队&#xff0c;定制开发 我们拥有…

轻松入门:HTML网页制作指南 进阶篇

一.表格标签 1.1表格的主要作用 表格不是用来布局页面的,而是用来展示数据的。 1.2基本语法 <table><tr><td>单元格内的文字</td>...</tr>...</table>说明&#xff1a; 1.<table> </table> 是用于定义表格的标签。 2.<t…

服务器数据恢复—异常断电导致ESXi虚拟机无法启动的数据恢复案例

服务器数据恢复环境&#xff1a; 某大厂PS4000服务器&#xff0c;服务器上部署VMware ESXi虚拟化平台。 服务器故障&#xff1a; 机房断电&#xff0c;重启后服务器中的某台虚拟机不能正常启动。管理员查看虚拟机配置文件&#xff0c;发现无法启动的虚拟机的配置文件除了磁盘文…

vivado原语使用

首先介绍一下原语&#xff1a;其英文名字为Primitive。原语是Xilinx针对其器件特征开发的一系列常用模块的名字&#xff0c;用户可以将其看成Xilinx公司为用户提供的ip&#xff0c;是芯片中的基本元件&#xff0c;代表FPGA中实际拥有的硬件逻辑单元&#xff0c;如LUT&#xff0…

freertos初体验 - 在stm32上移植

1. 说明 freertos内核 非常精简&#xff0c;代码量也很少&#xff0c;官方也针对主流的编译器和内核准备好了移植文件&#xff0c;所以 freertos 的移植是非常简单的&#xff0c;很多工具&#xff08;例如CubeMX&#xff09;点点鼠标就可以生成一个 freertos 的工程&#xff0…

【Qt知识】Qt中的对象树是什么?

在深入Qt编程的世界时&#xff0c;你会频繁遇到一个核心概念——对象树&#xff08;Object Tree&#xff09;。这个概念是Qt框架管理内存、处理事件和组织用户界面元素的基础。 什么是Qt对象树&#xff1f; 如果你的Qt应用程序就像一片茂盛的森林&#xff0c;而这片森林中的每…

【linux深入剖析】进程间通信

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 1.进程间通信目的2. 什么…

大语言模型应用与传统程序的不同

大语言模型&#xff08;LLM&#xff09; 被描述的神乎其神&#xff0c;无所不能&#xff0c;其实&#xff0c;大语言模型只是一个模型&#xff0c;它能够理解和生成自然语言&#xff0c;唯有依靠应用程序才能够发挥作用。例如&#xff0c;基于大模型可以构建一个最简单的会话机…

搜狐视频专访神工坊创始人任虎:以先进计算技术为引擎,引领新一代CAE革新之路

搜狐视频采访 神工坊&#xff08;无锡&#xff09;数字技术有限公司&#xff0c;源自国家超级计算无锡中心&#xff08;始于2016年&#xff09;&#xff0c;于2022年8月在无锡成立&#xff0c;是一家以高性能计算等先进计算技术推动新一代CAE技术革新的公司。 在全国科技工作者…

[Algorithm][动态规划][子序列问题][最长递增子序列][摆动序列]详细讲解

目录 0.子序列 vs 子数组1.最长递增子序列1.题目链接2.算法原理详解3.代码实现 2.摆动序列1.题目链接2.题目链接3.代码实现 0.子序列 vs 子数组 子序列&#xff1a; 相对顺序是跟源字符串/数组是一致的但是元素和元素之间&#xff0c;在源字符串/数组中可以是不连续的一般时间…