PAT乙类1014 福尔摩斯的约会 (20 分)

一、题目

大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm。大侦探很快就明白了,
字条上奇怪的乱码实际上就是约会的时间星期四 14:04,因为前面两字符串中第 1 对相同的大写英文字母(大小写有区分)是第 4 个字母 D,
代表星期四;第 2 对相同的字符是 E ,那是第 5 个英文字母,代表一天里的第 14 个钟头(于是一天的 0 点到 23 点由数字 0 到 9、以
及大写字母 A 到 N 表示);后面两字符串第 1 对相同的英文字母 s 出现在第 4 个位置(从 0 开始计数)上,代表第 4 分钟。现给定两对
字符串,请帮助福尔摩斯解码得到约会的时间。输入格式:
输入在 4 行中分别给出 4 个非空、不包含空格、且长度不超过 60 的字符串。输出格式:
在一行中输出约会的时间,格式为 DAY HH:MM,其中 DAY 是某星期的 3 字符缩写,即 MON 表示星期一,TUE 表示星期二,WED 表示星期三,
THU 表示星期四,FRI 表示星期五,SAT 表示星期六,SUN 表示星期日。题目输入保证每个测试存在唯一解。输入样例:
3485djDkxh4hhGE 
2984akDfkkkkggEdsb 
s&hgsfdk 
d&Hyscvnm
输出样例:
THU 14:04

二、代码

测试点分析

  1. 确当周几的字母是A–G,所以遍历字符串的时候,第一个和第二个字符串的相同位置字母不仅一样,还要是A~G内的
  2. 先确定小时,之后才会考虑小时和分钟!!而且是在满足1条件的字母的位置后面查找,前面根本不在乎!!即不执行!用flag来判断(因为两个字符串第一个相同的字符是8,但题目的陈述的是E,这是隐含信息)
  3. 两个字符串中相同位置具有相同字母的对数不止两对,所以在确定小时之后一定要跳出循环,(0-9和A-N是相互矛盾的,谁先相同,用谁)不然后面还可能又有一对满足2的,这就错误了,有一个测试点的陷阱就在这里。
  4. 最后两个字符串中只要是字母就行,不分大小写在字符串的相对位置(从零开始计数)。
  5. 小时或者分钟不满足两位的要记得补零。
新函数
  1. switch的替换 -----string类型
    week字符串的使用感觉不错哦!!可以不用switch了,get到新技能

string week[7] = {“MON”, “TUE”, “WED”, “THU”, “FRI”, “SAT”, “SUN”};

  1. 输出01、02、03…补零

printf("%02d", j); //c语言,不建议用cout

  1. 判断大写字母、小写字母、数字的方法

str[0][j] >= ‘A’ && str[0][j] <= ‘G’
str[0][j] >= ‘0’ &&str[0][j] <= ‘9’
str[2][j] >= ‘a’ && str[2][j] <= ‘z’

  1. flag的使用
    它的使用,可以选择性的执行代码!!!如果多种执行块时!!

  2. 输出大写字母的位置。比如E,是第5个。

‘E’ - ‘A’ + 1

分析

1) 这个题目确实看起来有点复杂,但是它整个的思维是:
同时遍历两个字符串相同位置
1.字符相等,而且字符必须是大写字母,且必须在’A’ ~ ‘G’ 之间。(星期几)
2.字符相等,而且字符必须在’A’ ~ ‘N’ 或 ‘0’ ~ '9’之间 (小时)
3.字符相等, 而且必须是字母。(分钟)

#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;int main() {char str[4][61] = {" "};int i, j;    string week[7] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};int flag = 0;int hour;for(i=0; i<4; i++) {cin>>str[i];}for(j=0; j<61; j++) {if(str[0][j] == str[1][j]) {if(flag == 0) {if(str[0][j] >= 'A' && str[0][j] <= 'G') {cout<<week[str[0][j] - 'A']<<" ";flag = 1;}}else {if(str[0][j] >= 'A' && str[0][j] <= 'N') {hour = str[0][j] - 'A' + 10;break;             //及时退出, 这两个是矛盾的 }else if(str[0][j] >= '0' && str[0][j] <= '9') {hour = str[0][j] - '0';break;            //及时退出,这两个是矛盾的 }}}}printf("%02d:", hour);     //hour也必须是02d形式!!!! for(j=0, i=0; j<61; j++) {if((str[2][j] >= 'a' && str[2][j] <= 'z') || (str[2][j] >= 'A' && str[2][j] <= 'Z')) {if(str[2][j] == str[3][j]) {printf("%02d", j);break;}}}	return 0;
}

下面的只是我第一次的表示方法,有点绕,自己就是记录一下!!!!可以不看

#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;int main() {char str[4][61] = {" "};        //四个字符串。int i, j;   char c1, c2, c3, c4;         //用来保存临时字符。  string wens[7] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};int flag = 0;                //用来判断星期是不是已经输出!!  int hour;                   //小时for(i=0; i<4; i++) {cin>>str[i];}for(j=0; j<61; j++) {if(str[0][j] >= 'A' && str[0][j] <= 'N') {    //不是任意一个字母就行的!!必须是在范围之内的 c3 = str[0][j];if(flag == 1 && c3 == str[1][j]) {hour = c3 - 'A' + 10;flag = 2;break;}}else if(str[0][j] >= '0' && str[0][j] <= '9') {c2 = str[0][j];if(str[1][j] == c2 && flag == 1) {     //是第一个字母相同后面找再相同的!! hour = c2 - '0';break;}}if(str[0][j] >= 'A' && str[0][j] <= 'G') {   //不是任意一个字母相同就行的 c1 = str[0][j];if(str[1][j] == c1){if(flag == 0) {cout<<wens[c1 - 'A']<<" ";flag = 1;}}}}printf("%02d:", hour);     //hour也必须是02d形式!!!! for(j=0, i=0; j<61; j++) {if((str[2][j] >= 'a' && str[2][j] <= 'z') || (str[2][j] >= 'A' && str[2][j] <= 'Z')) {c4 = str[2][j];         //最后一个条件只要是相同的字母就行,不区分大小写 if(c4 == str[3][j]) {printf("%02d", j);break;}}}	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 507. 完美数

1. 题目 对于一个 正整数&#xff0c;如果它和除了它自身以外的所有正因子之和相等&#xff0c;我们称它为“完美数”。 给定一个 整数 n&#xff0c; 如果他是完美数&#xff0c;返回 True&#xff0c;否则返回 False 示例&#xff1a; 输入: 28 输出: True 解释: 28 1 2…

python分段函数图像画法_我想用Python matplotlib 画一个这样类似的图像,需要用到分段函数。大佬帮帮这个小弟?...

有做出来了import matplotlib.pyplot as pltimport numpy as npdef lin():#直线方程i0while i!80:m np.linspace(20, 100, 3)n [(80-i), (80-i), (80-i)]axes.plot(m, n)i i 20def cruve():#圆弧方程k0while k!60:if k20:r 10.0#半径a, b ((70-k) ,-20 )#圆心坐标x np.a…

python笔记(五) - 获取对象的引用

1&#xff0c;使用 getattr 函数&#xff0c;可以得到一个直到运行时才知道名称的函数的引用。 >>>li ["Larry", "Curly"]>>>li.pop<built-inmethod pop of list object at 0x00A75850>>>>getattr(li,pop)<built-inme…

spring-test dao空指针异常_014、Java异常机制

1.异常的概念和分类异常指程序运行过程中出现的非正常现象&#xff0c;例如用户输入错误、除数为零、需要处理的文件不存在、数组下标越界等。在Java的异常处理机制中&#xff0c;引进了很多用来描述和处理异常的类&#xff0c;称为异常类。异常类定义中包含了该类异常的信息和…

基于奇异值分解(SVD)的图片压缩实践

文章目录1. 前言2. 原理简介2.1 SVD定义3. 实践代码4. 参考文献1. 前言 数字图片在计算机中是以矩阵形式存储的。所以可以通过矩阵理论和矩阵算法对数字图像进行分析和处理。本文通过对图片进行SVD压缩&#xff0c;对不同的参数下的压缩效果进行对比。 SVD概念可以参考&#…

执行文件异常报错:ImportError: attempted relative import with no known parent package

问题描述 1. 源代码中的导入代码&#xff1a; from ..utils.osutils import mkdir_if_missing #导入自己的 函数 from ..utils.serialization import write_json, read_json这个是将utils中的py文件导入到cuhk03中。但是报错&#xff01; 解决方法 1. 相对导入 其中上述…

待机、休眠、睡眠的区别和优缺点

Windows操作系统中很早就加入了待机、休眠等模式&#xff0c;而Windows Vista中更是新加入了一种叫做睡眠的模式&#xff0c;可是很多人还是习惯在不使用电脑的时候将其彻底关闭。其实充分利用这些模式&#xff0c;我们不仅可以节约电力消耗&#xff0c;还可以用尽可能短的时间…

LeetCode 508. 出现次数最多的子树元素和(递归)

1. 题目 给你一个二叉树的根结点&#xff0c;请你找出出现次数最多的子树元素和。 一个结点的「子树元素和」定义为以该结点为根的二叉树上所有结点的元素之和&#xff08;包括结点本身&#xff09;。 你需要返回出现次数最多的子树元素和。如果有多个元素出现的次数相同&…

知识图谱入门视频(一)

学习内容&#xff1a; 知识图谱导论 陈华钧 浙江大学计算机科学与技术学院 教授 小象学院 哔哩哔哩 第一章 【其实后面的方法学习只是一个框架式的学习&#xff0c;并不明白具体的操作】 1. 什么是知识图谱&#xff1f; 知识图谱是一个系统&#xff01; 从根据场景构建再到场…

onenetsim定位功能吗_经常玩手机的抓紧看看,原来手机键盘还隐藏4个实用功能,真实用...

可爱的人都关注我了&#xff0c;就差你了1在日常生活中&#xff0c;大家对手机的依赖性越来越大&#xff0c;不管走到哪&#xff0c;时时刻刻都拿着手机发信息。可是&#xff0c;用了这么久的手机&#xff0c;你真的会用手机键盘吗&#xff1f;你知道手机键盘上隐藏的小功能吗&…

程序模拟键盘鼠标操作

用代码模拟键盘鼠标操作,主要用到keybd_event/mouse_event或者SendInput API函数.使用示例如下(附注释): /** 模拟键盘输入,以按窗口键(WIN键)为例 *///keybd_event模拟键盘输入示例::keybd_event( VK_LWIN, 0, 0, 0); //按下WIN键 ::keybd_event( VK_LW…

LeetCode 520. 检测大写字母

1. 题目 给定一个单词&#xff0c;你需要判断单词的大写使用是否正确。 我们定义&#xff0c;在以下情况时&#xff0c;单词的大写用法是正确的&#xff1a; 全部字母都是大写&#xff0c;比如"USA"。 单词中所有字母都不是大写&#xff0c;比如"leetcode&qu…

不同电脑 命名管道_电脑键盘上的F1到F12,这些键都有哪些用处?用了5年总算明白了...

电脑键盘上的F1到F12&#xff0c;这些键都有哪些用处&#xff0c;用了5年总算明白了经常使用电脑的朋友会发现&#xff0c;电脑键盘上有一排F开头的键。那么这些键到底有什么用处呢&#xff1f;下面我们一起来了解一下。首先这些键都属于快捷键&#xff0c;所以每个键都有不同的…

知识图谱入门视频(二)

学习内容 小象学院 b站 第二章 【其实后面的方法学习只是一个框架式的学习&#xff0c;并不明白具体的操作】 第二部 典型知识库项目简介 CYC&#xff08;读音&#xff1a; 赛克&#xff09; CYC&#xff1a; 1984年由Douglas Lenat开始创建&#xff0c;最初的目标是建立人类…

InterDev 调试错误信息: Unable to set server into correct debugging state automatically....的解决办法...

InterDev 调试错误信息: Unable to set server into correct debugging state automatically....权威解决方法了&#xff1a;1、安装 vs6.0 cd2 vid_ss/setup.exe 2、安装 vs6.0 cd2 vid_ss/setup.exe3、配置dcom&#xff0c;设置用户权限4、打开IIS的调试功能5、OK详情见微软…

LeetCode 521. 最长特殊序列 Ⅰ

1. 题目 给你两个字符串&#xff0c;请你从这两个字符串中找出最长的特殊序列。 「最长特殊序列」定义如下&#xff1a;该序列为某字符串独有的最长子序列&#xff08;即不能是其他字符串的子序列&#xff09;。 子序列 可以通过删去字符串中的某些字符实现&#xff0c;但不…

wordpress acf字段 不同样式_提升wordpress执行效率二次开发实录

wordpress 对分类增加广告配置功能 wp_terms 增加admaster字段 varchar 200 wp-admin/edit-tag-form.php 小资料&#xff1a; wordpress wp_terms分类表 wp_term_taxonomy分类类型表、wp_term_relationships分类关联表 这三个表单相互关联 wordpress优化效率 当wordpress执行…

知识图谱入门知识(一)知识图谱应用以及常用方法概述

学习内容 搜集各种博客&#xff0c;理解实体识别、关系分类、关系抽取、实体链指、知识推理等&#xff0c;并且总结各种分类中最常用的方法、思路。 由于自己刚刚接触知识图谱&#xff0c;对该领域的概念和方法的描述还不是很清楚&#xff0c;所以只是简单的列出框架和添加链接…

openMP学习笔记(一)

声明&#xff1a;欢迎任何人和组织转载本blog中文章&#xff0c;但必须标记文章原始链接和作者信息。 本文链接&#xff1a;http://blog.csdn.net/li_007/archive/2009/04/30/4139211.aspx 开拓进取的小乌龟------->CSDN点滴点点滴滴Blog 之前大概看了一下openMP&#xff0c…

LeetCode 532. 数组中的K-diff数对

1. 题目 给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff 数对。 这里将 k-diff 数对定义为一个整数对 (i, j), 其中 i 和 j 都是数组中的数字&#xff0c;且两数之差的绝对值是 k. 示例 1: 输入: [3, 1, 4, 1, 5], k 2 输出: 2 解释: 数组中有两个 2-diff …