当前位置: 首页 > news >正文

蓝桥杯回文日期判断

思想:对于回文数的判断方法,最快的就是取其中一半的字符串长度,为s,然后将其进行翻转为s’ ,再把两者进行拼接即可保证是回文数,这样子就解决了枚举所有回文数的问题。
注意点:

  • 要求必须是有效日期
  • 注意闰年的2月份问题
    代码:
    (1)判断所给字符串是不是回文数
    (a) 取得前一半的数据,将原来一半和翻转后的一半进行拼接即可确保是回文数
    //transformer to stringstring s= to_string(num),t= to_string(num);//翻转其中一个reverse(t.begin() ,t.end());s+=t;//S一定为回文数

(b)判断日期是不是有效的

    int y= stoi(s.substr(0,4)),m=stoi(s.substr(4,2)),d= stoi(s.substr(6,2));//取出年月日if(y%400==0||(y%4==0&&y%100!=0))//如果是闰年month[1]=29;elsemonth[1]=28;//接着判断月份是否超过12if(m<1||m>12)return "-1";elsereturn s;

全部代码:

string check1(int num)
{//transformer to stringstring s= to_string(num),t= to_string(num);//翻转其中一个reverse(t.begin() ,t.end());s+=t;int y= stoi(s.substr(0,4)),m=stoi(s.substr(4,2)),d= stoi(s.substr(6,2));//取出年月日if(y%400==0||(y%4==0&&y%100!=0))//如果是闰年month[1]=29;elsemonth[1]=28;//接着判断月份是否超过12if(m<1||m>12)return "-1";elsereturn s;
}

常见函数:

to_string()//int转为字符串
reverse()//字符翻转
substr(0,4)//0是指起点位置,4是指复制4个,即从0号字符开始,复制四个作为返回值

(2)判断是不是ABABBABA类型的回文数

//判断是否是ABABBABA类型的回文数
string  check2(int num)
{//transformer to stringstring s= to_string(num),t= to_string(num);//翻转其中一个reverse(t.begin() ,t.end());s+=t;if(s[0]==s[2]&&s[1]==s[3])return s;elsereturn "-1";}

整个项目工程如下:
huiwen.cpp


// Created by HP on 2024/1/7.
//判断是否是回文数
#include "huiwen_number.h"int date;
int month[12]={31,28,31,30,31,30,31,30,31,30,31,30};//初始化每月天数
/*------------------- 判断是否是一个回文数---------------------* 判断回文数,只需要判断前半部分是不是回文数,然后翻转拼接即可**
*///判断日期是否合法
string check1(int num)
{//transformer to stringstring s= to_string(num),t= to_string(num);//翻转其中一个reverse(t.begin() ,t.end());s+=t;int y= stoi(s.substr(0,4)),m=stoi(s.substr(4,2)),d= stoi(s.substr(6,2));//取出年月日if(y%400==0||(y%4==0&&y%100!=0))//如果是闰年month[1]=29;elsemonth[1]=28;//接着判断月份是否超过12if(m<1||m>12)return "-1";elsereturn s;
}
//判断是否是ABABBABA类型的回文数
string  check2(int num)
{//transformer to stringstring s= to_string(num),t= to_string(num);//翻转其中一个reverse(t.begin() ,t.end());s+=t;if(s[0]==s[2]&&s[1]==s[3])return s;elsereturn "-1";}

huiwen.h

//
// Created by HP on 2024/1/7.
//
#include <iostream>
#include "string"
using namespace std;
#include "algorithm"
#ifndef HUIWEN_NUMBER_H
#define HUIWEN_NUMBER_H
extern int date;
extern int month[12];//初始化每月天数
string check1(int num);
string  check2(int num);
#endif //CHAPTER1_HUIWEN_NUMBER_H

main.cpp

#include <iostream>
#include "huiwen_number.h"
using namespace std;int main()
{
string  ans1="";
/* -------------------判断是否是回文数的蓝桥杯题目---------------------*/
cout<<"请你输入一个日期"<<endl;
cin>> date;//date回文.h文件中有定义了
for(int i=date/10000;;i++)
{if(check1(i)=="-1"||check1(i)== to_string(date))continue;else{if(ans1=="")ans1= check1(i);if(check2(i)!="-1"){cout<<ans1<<"\n"<<check2(i)<<endl;break;}}}return 0;}

CMakelist.txt

cmake_minimum_required(VERSION 3.26)
project(chapter1)set(CMAKE_CXX_STANDARD 17)add_executable(chapter1 main.cpphuiwen_number.cpphuiwen_number.h)

在这里插入图片描述

http://www.lryc.cn/news/284247.html

相关文章:

  • Qt文件和目录相关操作
  • 递归、搜索与回溯算法(专题一:递归)
  • element-ui 打包流程源码解析(下)
  • ChatGPT给出的前端面试考点(Vue.js)
  • ChatGPT 商业提示词攻略书
  • Notepad++运行C语言输出乱码
  • 深入解析 Java 方法引用:Lambda 表达式的进化之路
  • MySQL作业 (3)多表查询
  • ConcurrentHashMap和HashMap的区别
  • MCM备赛笔记——图论模型
  • 算法笔记(动态规划入门题)
  • 开发实践_阶段三
  • codegeex和通义灵码辅助编程——以及通义灵码无法登陆的bug解决
  • Android14之DefaultKeyedVector实现(一百八十二)
  • 银河麒麟操作系统 v10 中离线安装 Docker
  • 如何系统的学习Python
  • Java并发基础:一文讲清util.concurrent包的作用
  • C++PythonC# 三语言OpenCV从零开发(2):教程选择
  • 【嘉立创EDA-PCB设计指南】3.网络表概念解读+板框绘制
  • nodejs前端项目的CI/CD实现(二)jenkins的容器化部署
  • python爬虫案例分享
  • 【CC++】为什么 scanf 函数在读取字符串时不需要用取地址运算符
  • Linux dirs命令教程:dirs命令详解与实例(附实例详解和注意事项)
  • 掌握虚拟化:PVE平台安装教程与技术解析
  • Godot FileDialog无法访问其它盘符的文件
  • TestNG注释
  • 数据预处理 matlab 数据质量评估
  • 对象存储, 开源MinIO docker-compose.yml 文件
  • 爬虫笔记(一):实战登录古诗文网站
  • 适用于 Windows 11 的 12 个最佳免费 PDF 编辑器