2024年华为OD机试真题-字符串变换最小字符串

华为OD机试真题-字符串变换最小字符串-2024年OD统一考试(D卷)

题目描述:

给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。变换规则:交换字符串中任意两个不同位置的字符。

输入描述:一串小写字母组成的字符串s

输出描述:按照要求进行变换得到的最小字符串

补充说明:s是都是小写字符组成

                  1<=s.length<=1000

示例 

示例1

输入:abcdef

输出:abcdef

说明:abcdef已经是最小字符串,不需要交换

示例2

输入:bcdefa

输出:acdefb

说明:a和b进行位置交换,可以等到最小字符串

解题思路:

字符串处理。

Java解法:

import java.util.Arrays;
import java.util.Scanner;
 
public class Main {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String s = scanner.nextLine();
 
    char[] arr = s.toCharArray();
 
    int minIndex = 0;
    Integer minValue = Integer.valueOf(arr[minIndex]);
    for (int i = 0; i < arr.length; i++) {
      Integer curValue = Integer.valueOf(arr[i]);
      if (curValue <= minValue) {
        minValue = curValue;
        minIndex = i;
      }
    }
    if (minIndex == 0) {

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

华为OD机试题库2024年 文章被收录于专栏

2024年OD统一考试(D卷),最新最完整题库。 收录130+道真题,提供解题思路,Java/Python/C++三种答案源码。

全部评论
string = input() lst = [(ch, i) for i, ch in enumerate(string)] lst.sort() string = [ch for ch in string] n = len(string) i = 0 while i < n: if string[i] == lst[i][0]: i += 1 continue string[i], string[lst[i][1]] = string[lst[i][1]], string[i] break print("".join(string))
点赞
送花
回复 分享
发布于 07-04 17:07 贵州

相关推荐

4 5 评论
分享
牛客网
牛客企业服务