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

【美团3.18校招真题2】

大厂笔试真题网址:https://codefun2000.com/

塔子哥刷题网站博客:https://blog.codefun2000.com/

最多修改两个字符,生成字典序最小的回文串

提交网址:https://codefun2000.com/p/P1089

在这里插入图片描述

在这里插入图片描述
由于字符串经过修改一定为回文串,且最多修改两次,所以原字符串位置i与对称位置n-i-1不一样的个数最多为2。所以统计一下需要改的位置个数,记为cnt

  1. cnt=0,即原字符串就是回文串,找到第一个不为a的位置i,将i与对称位置n-i-1都改为a
aca      ---> aaa
acca     ---> aaaa
acbca    ---> aabaa 
  1. cnt=1,只有一个位置需要修改,此时分两种情况
    • 如果 i与对称位置n-i-1都不是a,将这俩位置都改为a即可
    • 如果 i与对称位置n-i-1只有一个为a,将另一个不是a的改为a。此时只改了一个字母,还可以改一个。当字符串长度为奇数时,将中间字符改为a
abcdba  ---> abaaba
abcea   ---> aacaa
cbcac   ---> caaac  
  1. cnt=2,两个对称位置需要修改, i与对称位置n-i-1,谁小就改为谁
abcde  ---> abcba
int main() {string s;cin >> s;int n = s.size();vector<int> idxs;for (int i = 0; i < n / 2; i++) {if (s[i] != s[n - 1 - i]) {idxs.push_back(i);}}int cnt = idxs.size();if (cnt == 0) {// 本身就是回文串,需要找到第一个不是a的地方修改for (int i = 0; i <= n / 2; i++) {if (s[i] != 'a') {s[i] = 'a';s[n - 1 - i] = 'a';break;}}}else if (cnt == 1) {// 只有一个需要修改的地方if (s[idxs[0]] != 'a' && s[n - 1 - idxs[0]] != 'a') {// 如果对称位置都不是a,则两个都改为as[idxs[0]] = 'a';s[n - 1 - idxs[0]] = 'a';}else {// 如果只有一个为a,则修改不是a的那个// 如果当前串为奇数,还要修改中间位置的为as[idxs[0]] = 'a';s[n - 1 - idxs[0]] = 'a';if (n & 1) {s[n / 2] = 'a';}}}else {// 有两个需要修改的地方,当前位置idxs[i]和对称位置n - 1 - idxs[i],谁小就改为谁for (int i = 0; i < cnt; i++) {char c = min(s[idxs[i]], s[n - 1 - idxs[i]]);s[idxs[i]] = c;s[n - 1 - idxs[i]] = c;}}cout << s << endl;return 0;
}
http://www.lryc.cn/news/159998.html

相关文章:

  • 一文带你快速入门『YOLOv8』
  • # 将PCL点云转换为Eigen向量进行运算
  • elmentui表单重置及出现的问题
  • 游戏平台加盟该怎么做?需要准备什么?
  • selenium中定位shadow-root,以及获取shadow-root内部的数据
  • OpenCV(三十二):轮廓检测
  • 接口自动化测试做线上巡检,如何避免数据污染
  • C++ 指针
  • SpringBoot集成kubernetes-client升级k8s后初始化失败问题
  • MySQL 学习笔记
  • Docker 的常用命令
  • 嵌入式-电子电路四个基本定律
  • 【linux命令讲解大全】083.Linux 常用命令ispell , spell , atrm, chattr
  • JAVA实现SAP接口
  • 华南理工大学811信号与系统考研分数线,招生人数,报考统计,考情分析,就业,真题,大纲,参考书,华工811
  • Android 字符串 占位符
  • vue页面添加水印(可用于H5,APP)
  • 下载git
  • MSYS2 如何切换镜像源(附带脚本自动修改)
  • 使用ICMP协议来判断UDP端口的存活状态
  • VUE for循环 默认选中第一条数据
  • 小程序代码管理
  • RK3568-GPIO控制
  • 2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书南京师范大学图书馆
  • 【MySQL】什么是索引?如何选择索引类型?
  • 第16章 服务安全控制
  • 面试问题总结(1)
  • QUdpSocket Class
  • 如何实现MongoDB数据的快速迁移?
  • react中使用Modal.confirm数据不更新的问题解决