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

米哈游春招算法岗-2023.03.19-第一题-交换字符-简单题

交换字符

Problem Description

米小游拿到了一个仅由小写字母组成的字符串,她准备进行恰好一次操作:交换两个相邻字母,在操作结束后使得字符串的字典序尽可能大。
请你输出最终生成的字符串。

input

一个仅由小写字母组成的字符串,长度不小于 2 ,不超过200000 。

ouput

操作后的字符串。

Sample Input

ba

Sample Output

ab

题目类型、难度、来源

  • 类型:暴力
  • 难度:简单
  • 来源:米哈游春招算法岗-2023.03.19-第一题-交换字符

总体思路:

  • 此题很简单,输入一个字符串,必须要交换一次,使得字符串的字典序尽可能大。
  • ①首先从左到右遍历,如果遇到右边的字符比左边的字符大,马上交换,并break。
  • ②如果第一种情况不存在,说明不能通过交换使字符串字典序变大,此时就要注意避免交换导致字典序减小。就要看字符串中是否有相邻的两个字符相同大小。如果存在,那么可以使用一次交换使字典序不变。
  • ③如果上面两种情况都不存在,就要尽量让字典序减少得尽可能少。此时应该交换字符串最后的两个元素。

AC代码

#include <iostream>
#include <string>
using namespace std;
void swap(char &a, char &b){
    char t = a;
    a = b;
    b = t;
}
int main(){
    string s;
    cin >> s;
    int i, flag = 0;
    for (i = 0; i < s.size()-1; i++){
        if (s[i+1] > s[i]){
            swap(s[i], s[i+1]);
            break;
        }else if (s[i+1] == s[i]){
            flag = 1;
        }
    }
    if (i == s.size()-1){
        if (flag == 0){
            swap(s[s.size()-1], s[s.size()-2]);
        }
    }
    cout << s;
    return 0;
}

http://www.kler.cn/a/2596.html

相关文章:

  • 点击底部的 tabBar 属于 wx.switchTab 跳转方式,目标页面的 onLoad 不会触发(除非是第一次加载)
  • 51单片机——定时器中断(重点)
  • Mac中配置vscode(第一期:python开发)
  • AIA - APLIC之三(附APLIC处理流程图)
  • 全新免押租赁系统打造便捷安全的租赁体验
  • 【Linux】shell脚本编程
  • [Python图像处理] 基于离散余弦变换的图像去噪
  • 计算机网络学习1
  • Django 实现瀑布流
  • EventLoop(回顾)
  • JVM系统优化实践(11):GC如何搞垮线上系统
  • Unity脚本类 ---- Input类,虚拟轴与插值方法
  • 第四季新星计划即将开启,博客之星取消拉票你怎么看?
  • 音乐制作:Ableton Live 11 Suite Mac
  • 全面比较Aptos和Sui:Aptos已上线 来看看Sui
  • 56 | fstab开机挂载
  • 【刷题之路Ⅱ】牛客 NC107 寻找峰值
  • 01. Vue核心 Vue简介 初识
  • 智能灯泡一Homekit智能家居系列
  • 【算法题】2191. 将杂乱无章的数字排序
  • Spring教程——Spring IoC(控制反转)
  • Docker—苹果Mac安装Docker的两种方式
  • 真要被00后职场整顿了?老员工纷纷表示真的干不过.......
  • Java - 配置中心初体验
  • Nginx可视化管理工具 - Nginx Proxy Manager
  • three.js中创建文字(Creating text)