赛码网-回文串 100%AC代码(C)

news2025/3/1 3:24:11

————————————————————————————————————
⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生。
⏩最近在准备秋招,一直在练习编程。
⏩本篇文章对赛码网的回文串 题目做一个详解。
⏩感谢你的阅读,不对的地方欢迎指正。
————————————————————————————————————
题目:
在这里插入图片描述
思路解析:

  1. 题目要求判断给定的字符串能否通过添加一个字母,变成回文串。
  2. 回文串的特点是正着和反着读都一样,那么我们可以通过比较字符串与其反转后的字符串是否相等来判断是否是回文串。
  3. 如果该字符串本身已经是回文串了,直接返回"Yes"。
  4. 需要判断首部与尾部的对称字符是否相等,如果相等,则添加字母后可以得到一个回文串;如果不相等,则无法通过添加一个字母得到回文串。
  5. 根据上述条件进行判断,如果满足则返回"Yes",否则返回"No"。

具体实现步骤:

  1. 判断字符串本身是否为回文串,如果是,则直接返回"Yes"。 如果字符串不是回文串,遍历字符串的每个位置,将一个字母插入到该位置作为测试。
  2. 对于每个位置,判断插入字母后的字符串是否变成了回文串。
  3. 如果存在至少一个位置满足添加字母后变成回文串的条件,返回"Yes";否则返回"No"。

代码如下:

#include <stdio.h>
#include <string.h>

int isPalindrome(char *s) {//判断字符串是否回文
    int length = strlen(s);
    for (int i = 0; i < length / 2; i++) {
        if (s[i] != s[length - i - 1]) {
            return 0;
        }
    }
    return 1;
}

int canBePalindrome(char *s,char c) {//判断在任意位置加入c字符后字符串是否回文
    if (isPalindrome(s)) {
        return 1;
    }
    
    int length = strlen(s);
    for (int i = 0; i <= length; i++) {
        char temp[12];
        strncpy(temp, s, i);
        temp[i] = c;  // 添加一个字母
        strncpy(temp + i + 1, s + i, length - i);
        temp[length + 1] = '\0';
        
        if (isPalindrome(temp)) {
            return 1;
        }
    }
    return 0;
}
int canBehuiwen(char *s)//判断加入a-z字符后字符是否回文
{
    for(char c = 'a';c <= 'z';c++){
        if(canBePalindrome(s,c)) return 1;
    }
    return 0;
}

int main() {
    char s[11];
    scanf("%s", s);
    
    if (canBehuiwen(s)) {
        printf("Yes\n");
    } else {
        printf("No\n");
    }
    
    return 0;
}

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

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

相关文章

智慧家庭如何落地?三翼鸟把答案写在用户家里

近年来&#xff0c;学术界流行一句话&#xff0c;“把论文写在中国大地上”。 一项新技术从实验室到千万家&#xff0c;落地难、转化低&#xff0c;是技术创新经常碰到的问题。所以&#xff0c;如何让新技术扎根大地、扎根真实需求&#xff0c;普惠人间&#xff0c;是中国产学研…

Java并发编程第4讲——Java中的锁(知识扫盲)

目录 一、锁的相关概念 1.1 什么是锁 1.2 为什么需要锁 1.3 Java中锁的分类 二、synchronized关键字 2.1 三个特点 2.2 三种表现形式&#xff08;&#x1f64b;‍♂️&#xff09; 2.3 sychronized是怎么实现的&#xff08;&#x1f64b;‍♂️&#xff09; 2.4 JDK1.…

opencv基础52-图像轮廓学习05-凸包获取-cv2.convexHull()

逼近多边形是轮廓的高度近似&#xff0c;但是有时候&#xff0c;我们希望使用一个多边形的凸包来简化它。 凸包跟逼近多边形很像&#xff0c;只不过它是物体最外层的“凸”多边形。凸包指的是完全包含原有轮 廓&#xff0c;并且仅由轮廓上的点所构成的多边形。凸包的每一处都是…

SpringBoot3分库分表

标签&#xff1a;ShardingSphere5.分库.分表&#xff1b; 一、简介 分库分表的设计和实现方式&#xff0c;在之前的内容中总结过很多&#xff0c;本文基于SpringBoot3和ShardingSphere5框架实现数据分库分表的能力&#xff1b; 不得不提ShardingSphere5文档中描述的两个基本概…

伪类和伪元素有何区别?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 伪类&#xff08;Pseudo-class&#xff09;⭐ 伪元素&#xff08;Pseudo-element&#xff09;⭐ 区别总结⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前…

.NET Core反射获取带有自定义特性的类,通过依赖注入根据Attribute元数据信息调用对应的方法

前言 前段时间有朋友问道一个这样的问题&#xff0c;.NET Core中如何通过Attribute的元数据信息来调用标记的对应方法。我第一时间想到的就是通过C#反射获取带有Custom Attribute标记的类&#xff0c;然后通过依赖注入&#xff08;DI&#xff09;的方式获取对应服务的方法并通过…

应用在智能仓储温湿度监测系统中的温度传感芯片

近年来各行各业越来越重视产品的仓库、冷库存储环境&#xff0c;食品、药品、化工产品的保存都离不开冷库。温湿度是影响冷库环境的主要因素&#xff0c;建立实时的温湿度监控系统&#xff0c;保存查看完整的历史温湿度数据十分必要。 物资的保存对存储环境的质量要求较为严格…

Spring IoC 详解

目录 一、引言二、Spring Bean三、将一个类声明为 Bean 所涉及的注解四、Component 和 Bean 的区别五、注入 Bean 的注解六、Autowired 和 Resource 的区别七、Bean7.1 作用域7.2 线程安全7.3 生命周期 一、引言 IoC&#xff08;Inversion of Control:控制反转&#xff09; 是…

JUC线程池的实战问题引出的一系列原理问题

1 我们为什么需要使用线程池 线程过多会带来额外的开销&#xff0c;其中包括创建销毁线程的开销、调度线程的开销等等&#xff0c;同时也降低了计算机的整体性能。线程池维护多个线程&#xff0c;等待、监督、管理、分配可并发执行的任务。这种做法&#xff0c;一方面避免了处…

分享3款屏幕录制软件,一定要来看!

在数字化时代&#xff0c;屏幕录制软件成为了一个必不可少的工具。它可以帮助用户捕捉并记录计算机屏幕上的活动&#xff0c;因此选择一款功能强大、易于使用的屏幕录制软件至关重要。本文将介绍3款备受好评的屏幕录制软件&#xff0c;通过本文的阅读&#xff0c;您将了解到它们…

Android图形-刷新与显示

目录 屏幕显示原理&#xff1a; 显示刷新的过程 VSYNC机制具体实现 小结&#xff1a; 屏幕显示原理&#xff1a; 过程描述&#xff1a; 应用向系统服务申请buffer 系统服务返回一个buffer给应用 应用开始绘制&#xff0c;绘制完成就提交buffer&#xff0c;系统服务把buffer数据…

两年了^

我也想不到是到了现在 记得刚来腾讯工作半年时候&#xff0c;我写了一篇文章 在腾讯的这半年 之后&#xff0c;又经过了半年时间&#xff0c;我又写了一篇总结文章 一年了 现在又过了一年多&#xff0c;本想把两年的入职截图留下&#xff0c;之前因为微信存储太大把微信卸载后重…

实现功能:ChatGPT 微信助手可以自动搜索网络信息回答问题

“ ChatGPT微信助手升级内测功能上线&#xff01;原先只能回答通用问题,现在遇到需要查询具体信息的问题也不愁啦。” 01 — 最近&#xff0c;上线了ChatGPT微信助手的体验群&#xff1a;《ChatGPT 微信助手上线&#xff01;问答更便捷&#xff0c;功能持续升级中。》&#xff…

Android高手进阶教程(一)-------Android常用名令集锦(图文并茂)!

大家好&#xff0c;今天我们要讲的是android开发中&#xff0c;比较常用的名令集锦&#xff0c; 在我们开发中难免用到Android命令&#xff0c;有些确实命令确实很有用处。 特别对于一些初学者来说&#xff0c;命令根本没有想过用也不会用&#xff0c;比如他们想安装一个.apk文…

以太网网络安全协议(十三)

一、IPsec协议 IPsec。它是指在IP首部的后面追加“封装安全有效载荷”&#xff08;ESP&#xff09;和“认证首部”&#xff08;AH&#xff09; &#xff0c;从而对此后的数据进行加密&#xff0c;不被盗取者轻易解读。 二、TLS/SLL协议 SSL最早由网景公司提出&#xff0c;标准化…

架构设计第42讲:美团 - 可视化全链路日志追踪

架构设计第42讲&#xff1a;美团 - 可视化全链路日志追踪 目前在分布式场景下&#xff0c;业务追踪的主流实现方式包括两类&#xff0c;一类是基于日志的ELK方案&#xff0c;一类是基于单次请求调用的会话跟踪方案。然而随着业务逻辑的日益复杂&#xff0c;上述方案越来越不适用…

8月10日,每日信息差

1、菜鸟国际快递“承诺达、晚必赔”覆盖22国。具体来讲&#xff0c;菜鸟国际快递对无忧、经济和简易三种标准产品全面升级&#xff0c;其中英国、意大利、加拿大、美国四国时效平均提升30%以上。凡使用这三种快递产品发货至22国的商家&#xff0c;其货物在速卖通电商平台享有“…

网络安全 Day29-运维安全项目-iptables防火墙

iptables防火墙 1. 防火墙概述2. 防火墙2.1 防火墙种类及使用说明2.2 必须熟悉的名词2.3 iptables 执行过程※※※※※2.4 表与链※※※※※2.4.1 简介2.4.2 每个表说明2.4.2.1 filter表 :star::star::star::star::star:2.4.2.2 nat表 2.5 环境准备及命令2.6 案例01&#xff1a…

月度资金预算情况表取的数和结算页面不一样,是为什么?

月度资金预算情况表取的数和结算页面不一样&#xff0c;如下图&#xff0c;是为什么&#xff1f; 取数公式&#xff1a; CMPRFS(‘[收支项目01030101] ‘,K(‘单位’),’’,‘’,‘0’,ZDATEQC(‘-’),ZDATE(‘-’),‘1’,‘’,‘’)CMPRFS(‘[收支项目01030102] ‘,K(‘单位…

最新版本2023UI千月影视APP源码 开源完美版前后端完美匹配 后端基于ThinkPHP框架

最新版本的2023UI千月影视APP源码是一款开源的完美版应用程序&#xff0c;具备前后端完美匹配的特点。该应用的后端开发基于ThinkPHP框架&#xff0c;这是一个广泛使用的PHP开发框架&#xff0c;具有稳定性和安全性方面的优势。 2023UI千月影视APP是一款提供电影、电视剧、综艺…