单次交换找字典序最小字符串

2023-10-29

题目要求:
给一个字符串s,你可以至多选择两个不同位置的字符进行交换(可以不交换),问所有可能中字典序最小的串。
输入:aaazbcdeadcd
输出:aaaabcdezdcd

题目解析:
字典序最小 即与当前字符串相比最小的字符串
那么只需要找到字符串中前面一个字符与后面一个字符之间差距最大且前大于后的一组字符交即可
从后向前遍历 与当前元素之前的所有元素比较并记录 交换

java代码:

public class Main {
	public static void main(String[] args) {
		String string = "aaazbcdeadcd";
		int num = 0;
		
		char[] cs = string.toCharArray();
		int flag1 = cs.length - 1;
		int flag2 = 0;
		for (int i = cs.length-1;i>0;i--) {
			for (int j = 0;j < i;j++) {
				if(num < cs[j] - cs[i]) {
					num = cs[j] - cs[i];
					flag1 = i;
					flag2 = j;
				}
			}
		}
		char c = cs[flag2];
		cs[flag2] = cs[flag1];
		cs[flag1] = c;
		for(int i = 0;i<cs.length;i++) {
			System.out.print(cs[i]);
		}			
	}
}

欢迎提出问题并指正~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单次交换找字典序最小字符串 的相关文章

随机推荐

  • uniapp上传图片视频文件集合组件

  • 分享一个科幻风的404

    先看效果 再看代码
  • 华为OD机试 C++ 最大可靠性设备

    题目 你正在组装一台设备 这台设备由不同种类的零件组成 每种类型的零件都需要一个 每个零件都有自己的 可靠度 和价格 昂贵的零件通常具有更高的可靠度 但是 组装完成的设备的可靠度是由所有零件中可靠度最低的那个决定的 也就是说 如果你有5个零
  • Redis操作工具类

    前期文章中关于RedisOperateUtil工具类使用时需要强制类型转换 针对List等操作不方便 为此特意更新RedisOperateUtil工具类 前文链接 https blog csdn net liwenyang1992 arti
  • 前端面试知识点总结

    前端知识点 vue知识点 Vue的两个核心点 组件渲染更新的过程 Vue的MVVM实现流程 虚拟 DOM patch 方法 diff 算法 什么是patch patch的流程 说一下指令v el的作用是什么 nextTick 使用场景和原理
  • Java 5-3、用户模块-Mapper.xml的SQL整理

    5 3 用户模块 Mapper xml的SQL整理 一 SQL总结 三个 select SQL login findUserById findUserByAccount 一个 insert SQL register 一个 update SQ
  • vue3+vant4结合(vue-i18n)实现国际化语言切换

    1 先安装i18n npm install vue i18n 2 配置多语言文件 先进行国际化配置在src下创建一个lang文件夹并在其中创建index js zh js en js文件 若为TS 更改文件后缀即可 自定义语言格式 expo
  • 测试数据又多又乱?自动化软件测试数据管理平台Parasoft DTPv2021.1发布

    Parasoft DTP 汇总来自不同测试实践的结果 提供对测试结果的智能和持续监控 消除了与错误软件相关的业务风险 加快了交付速度 并促进了持续的流程改进 DTP 监控和测量质量实践的应用 例如静态分析 单元测试 覆盖分析 运行时错误检测
  • burpsuite插件自动识别图片验证码暴力破解

    burpsuite插件自动识别验证码暴力破解 1 准备工具 2 工具配置 2 1 burp导入captcha killer modified 0 14 jar 2 1 1 先生成jar包 2 1 2 再将jar包导入burp 2 2 kal
  • linux %s替换命令,linux vi 替换命令

    linux vi 替换命令 发布时间 2010 10 22 16 34 53 作者 佚名 我要评论 久了没用vi 命令都忘了 到网上找了些 记录下 以下内容出自网络 来源已经不详 vi vim 中可以使用 s 命令来替换字符串 以前只会使用
  • 高效程序员工作法(八)

    目录 前言 一 如何做好验收测试 一句话总结 二 你的代码是怎么变混乱的 一句话总结 三 总是在MVC分层架构 但你真的理解分层么 一句话总结 四 为什么总有人觉得5万块钱可以做一个淘宝 一句话总结 五 先做好DDD再谈微服务吧 那只是一种
  • CTFshow-pwn入门-前置基础pwn29-pwn31

    什么是PIE 由于ASLR是一种操作系统层面的技术 而二进制程序本身是不支持随机化加载的 便出现了一些绕过方法 例如ret2plt GOT劫持 地址爆破等 于是 人们于2003年引入了位置无关可执行文件 Position Independe
  • TMDS协议

    1 概述 1 1 连接结构 图1 TMDS连接结构 数据流中包含了像素和控制数据 发送器在任何给定的输入时钟周期 到底是编码像素数据还是控制数据取决于数据使能信号DE DE有效时 指示像素数据要被发送 注意 当发送像素数据的时候 忽略控制数
  • echarts中的饼状图设置颜色

    第一种方式 color FE8463 red green 第二种方式 itemStyle normal color function params 自定义颜色 var colorList FE8463 red green return co
  • windows2008服务器维护,Windows Server 2008R2 & windows server 2012 R2

    PAGE TITLEWindows Server 2008R2 windows server 2012 R2 windows服务器维护 86988 net contacts DESCRIPTIONMd5 file get DT ROOT l
  • C++中cout和cerr的区别

    标准IO库定义的其中3个IO对象 一个istream类型对象 cin 两个ostream对象 cout cerr cin 读取标准输入的istream对象 对应于标准输入流 关联到标准输入设备 通常为键盘 用来读取用户在终端上的输入内容 通
  • 2021-03-26

    爬虫笔记1 爬虫基础 1 爬虫的特点介绍 1 知识点碎片化 面对不同的网站 每个网站都有每个网站的特点 根据不同网站采取不同的技术和手段 2 学习难度在于要与网站的运维人员和维护人员进行搏斗 网站的网爬是不断升级 3 学习特点 爬虫的阶段课
  • 网络编程02

    网络通信 底层遵循TCP IP协议 在系统中以socket接口方式呈现 基于TCP协议的网络通信模型 服务端 客户端 创建socket对象 创建socket对象 准备通信地址 本机ip 端口号 准备通信地址 目标公网ip 端口号 绑定soc
  • UOS桌面版配置远程访问

    UOS桌面版配置远程访问 一 SSH SFTP 二 VNC 三 x11vnc service 一 SSH SFTP 安装SSH sudo apt update sudo apt install ssh 开启SFTP vi etc ssh s
  • 单次交换找字典序最小字符串

    题目要求 给一个字符串s 你可以至多选择两个不同位置的字符进行交换 可以不交换 问所有可能中字典序最小的串 输入 aaazbcdeadcd 输出 aaaabcdezdcd 题目解析 字典序最小 即与当前字符串相比最小的字符串 那么只需要找到