【美团3.18校招真题2】

news2025/1/21 5:56:07

大厂笔试真题网址: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,则两个都改为a
			s[idxs[0]] = 'a';
			s[n - 1 - idxs[0]] = 'a';
		}
		else {
			// 如果只有一个为a,则修改不是a的那个
			// 如果当前串为奇数,还要修改中间位置的为a
			s[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.coloradmin.cn/o/991272.html

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

相关文章

[Linux]动静态库

[Linux]动静态库 文章目录 [Linux]动静态库见一见库存在库的原因编写库模拟编写静态库模拟使用静态库模拟编写动态库模拟使用静态库 库的加载原理静态库的加载原理动态库的加载原理 库在可执行程序中的编址策略静态库在可执行程序中的编址策略动态库在可执行程序中的编址策略 见…

本地启动 Falcon-180B

本地启动 Falcon-180B 通过 Gradio 的 load 函数&#xff0c;我们可以在本地加载 HuggingFace 的 Spaces 上面的 demo。 那就运行 Falcon-180B 来试试吧。 创建 falcon_demo.py 文件&#xff0c; cat << EOF > falcon_demo.py import gradio as grdemo gr.load(&q…

小节3:数据类型

Python的数据类型包括&#xff1a;字符串&#xff08;str&#xff09;、整数&#xff08;int&#xff09;、浮点数&#xff08;float&#xff09;、布尔类型&#xff08;bool&#xff09;、空值类型&#xff08;NoneType&#xff09;、列表&#xff08;list&#xff09;、字典&…

Spring Cloud zuul与CloseableHttpClient连接池,TLS证书认证

前言 最近做项目&#xff0c;需要一个代理逻辑&#xff0c;实际上这种代理NGINX最好&#xff0c;但是有些额外功能的开发&#xff0c;NGINX就需要额外能力支持&#xff0c;比如lua脚本&#xff0c;常见的做法有kong&#xff0c;apisix等&#xff0c;据说apisix的性能较强&…

Python 03(循环语句)

Python03&#xff08;循环语句&#xff09; 文章目录 Python03&#xff08;循环语句&#xff09;一、while语句二、while实现猜数字三、while循环的嵌套while循环嵌套实例需求&#xff1a; 四、for循环1、什么 是for循环2、语法3、执行流程4、for循环的基本使用5、range()函数6…

光刻机的原理和技术路线概览

一、简介 集成电路产业被誉为现代“工业粮食”&#xff0c;引领未来科学技术产业革命的发展&#xff0c;带动世界前沿技术创新发展。 集成电路产业是社会发展的先导产业&#xff0c;主要包括半导体材料、装备、芯片制造、封装测试、电路设计等重要环节。 随着工业智能制造和电子…

OpenCV(三十):图像膨胀

1.图像膨胀原理 图像膨胀的原理是将一个结构元素&#xff08;也称为核或模板&#xff09;在图像上滑动&#xff0c;并将其与图像中对应位置的像素进行比较。如果结构元素的所有像素与图像中对应位置的像素都匹配&#xff0c;那么该位置的像素值保持不变。如果结构元素的任何一个…

Telnet

远程登录/管理 目录 1、什么是Telnet 2、Telnet工作原理 3、常见的Telnet使用场景 4、Telnet协议结构 5、Telnet工作流程 6、Telnet常见命令 6.1、[Huawei]user-interface ? 用户界面 6.2、[Huawei]user-interface vty ? 6.3、[Huawei-ui-vty0-4]? 6.4、[Huawei-…

软件测试技术题目大全【含答案】

请看下面 你的测试职业发展是什么?  测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师奔去。而且我也有初步的职业规划&#xff0c;前3年积累测试经验&#xff0c;按如何做好测试工程师的要点去要求自己&#x…

buuctf crypto 【[AFCTF2018]Morse】解题记录

1.打开文件 2.摩斯密码解密 3.这个结果验证之后发现不对&#xff0c;猜测是16进制转字符 4.验证发现是对的

直方图均衡化原理

import numpy as np import cv2 hist, bins np.histogram(img, bins256, range(0, 256))# 计算累积分布函数&#xff08;CDF&#xff09; cdf np.cumsum(hist)# 归一化CDF&#xff1a; 归一化CDF以确保其范围在0到255之间 cdf_norm 255 * (cdf - cdf.min()) / (cdf.max()…

提词软件有哪些?了解一下这几个

提词软件有哪些&#xff1f;提词软件可以广泛应用于各种场景。除了在学习和工作中提高效率外&#xff0c;在日常生活中也有很多用处。例如&#xff0c;在进行演讲的时候&#xff0c;如果担心会因为紧张而忘词的话&#xff0c;就可以使用一些提词软件&#xff0c;将演讲词编辑进…

使用P5.js来制作一个快乐的小风车动画

p5.js简介 前一段时间偶然了解到一个觉得很好玩儿的东西p5.js,于是就去了解了一下&#xff0c;发现可以自己设计一些有趣的动画效果&#xff0c;设计出来的动画可以放置到页面当中&#xff0c;而且也是简单易学的。 下面是一段官方的介绍&#xff1a; p5.js是一个以 Processi…

0016Java程序设计-springboot幼儿园管理系统

摘 要目 录系统设计开发环境 摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于幼儿园管理系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了幼儿园管理系统&a…

从JVM角度看继承

从JVM角度看继承 最近重读了周志明老师的《深入理解JAVA虚拟机》一书&#xff0c;看完大有收获&#xff0c;但仍对继承情况下对象内存布局有所疑惑&#xff0c;所以查阅资料&#xff0c;结合本书进行分析 参考文档&#xff1a; 【深入理解JVM】&#xff1a;Java类继承关系中…

算法训练营day45|动态规划 part07:完全背包 (LeetCode 70. 爬楼梯(进阶)、322. 零钱兑换、279.完全平方数)

文章目录 70. 爬楼梯(进阶)(求排列方法数)思路分析代码实现 322. 零钱兑换(求等于背包重量的最小物品数)思路分析代码实现思考总结 279.完全平方数 (求等于背包重量的最小物品数)思路分析代码实现 70. 爬楼梯(进阶)(求排列方法数) 题目链接&#x1f525; 假设你正在爬楼梯。需…

jquery jstree的懒加载

效果如下 使用jquery的jstree组件 1.前端准备工作 1.1引入jstree样式和js <link rel"stylesheet" href"/public/vendor/jstree/jstree.css"> <div id"departmentJstree"></div> <script src"/public/vendor/jstree…

Dominosa/数邻(2) | C++ | BFS

目录 一、Dominosa简介二、题目描述三、编程思路四、完整代码 一、Dominosa简介 Dominosa&#xff0c;中文名称为数邻&#xff0c;是一种棋盘游戏&#xff0c;基于骨牌的排列和匹配来进行。它是从骨牌游戏中发展而来的&#xff0c;在骨牌的基础上添加了一些规则和难度。具体的游…

canape中快速配置需要录制参数的技巧

以前在车里录制数据时&#xff0c;大量融合数据一个一个拖拽 &#xff0c;不仅慢&#xff0c;有时心不细的话&#xff0c;还会漏选、挑错。 用正则表达式的挑选方法&#xff0c;可以既快速又准确的挑出所需数据。 以下蓝色字体是操作方法&#xff1a; 正则表达式 示例&#xff…

QTableView通过setColumnWidth设置了列宽无效的问题

在用到QT的QTableView时&#xff0c;为了显示效果&#xff0c;向手动的设置每一列的宽度&#xff0c;但是如下的代码是无效的。 ui->tableView->setColumnWidth(0,150);ui->tableView->setColumnWidth(1,150);ui->tableView->setColumnWidth(2,150);ui->t…