华为OD机试E卷 –字符串变换最小字符串 –24年OD统一考试(Java & JS & Python & C & C++)

文章目录

题目描述

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

输入描述

一串小写字母组成的字符串s

输出描述

按照要求进行变换得到的最小字符串

用例

输入

abcdef

输出

abcdef

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

输入

bcdefa

输出

acdefb

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

备注:
s是都是小写字符组成
1<=s.length<=1000

题目解析

  1. 遍历字符串:从左到右遍历字符串,找到第一个可以交换的位置。
  2. 寻找最小字符:对于每个字符,从当前位置之后的字符中找到最小的字符。
  3. 交换字符:如果找到的最小字符比当前字符小,则进行交换。
  4. 返回结果:如果进行了交换,返回交换后的字符串;如果没有进行交换,返回原字符串。

JS算法源码

```javascript
function getMinString(s) {
    let chars = s.split('');
    let n = chars.length;

    for (let i = 0; i < n - 1; i++) {
        let minChar = chars[i];
        let minIndex = i;

        for (let j = i + 1; j < n; j++) {
            if (chars[j] < minChar) {
                minChar = chars[j];
                minIndex = j;
            }
        }

        if (minIndex !== i) {
            [chars[i], chars[minIndex]] = [chars[minIndex], chars[i]];
            return chars.join('');
        }
    }

    return s;
}

// 示例输入
const s = "acb";
console.log(getMinString(s)); // 输出 "abc"

```

java算法源码

```java
public class Main {
    public static String getMinString(String s) {
        char[] chars = s.toCharArray();
        int n = chars.length;

        for (int i = 0; i < n - 1; i++) {
            char minChar = chars[i];
            int minIndex = i;

            for (int j = i + 1; j < n; j++) {
                if (chars[j] < minChar) {
                    minChar = chars[j];
                    minIndex = j;
                }
            }

            if (minIndex != i) {
                char temp = chars[i];
                chars[i] = chars[minIndex];
                chars[minIndex] = temp;
                return new String(chars);
            }
        }

        return s;
    }

    public static void main(String[] args) {
        String s = "acb";
        System.out.println(getMinString(s)); // 输出 "abc"
    }
}

```

python算法源码

```python
def get_min_string(s):
    chars = list(s)
    n = len(chars)

    for i in range(n - 1):
        min_char = chars[i]
        min_index = i

        for j in range(i + 1, n):
            if chars[j] < min_char:
                min_char = chars[j]
                min_index = j

        if min_index != i:
            chars[i], chars[min_index] = chars[min_index], chars[i]
            return ''.join(chars)

    return s

# 示例输入
s = "acb"
print(get_min_string(s))  # 输出 "abc"

```

c算法源码

```c
#include 
#include 

char* getMinString(char* s) {
    int n = strlen(s);

    for (int i = 0; i < n - 1; i++) {
        char minChar = s[i];
        int minIndex = i;

        for (int j = i + 1; j < n; j++) {
            if (s[j] < minChar) {
                minChar = s[j];
                minIndex = j;
            }
        }

        if (minIndex != i) {
            char temp = s[i];
            s[i] = s[minIndex];
            s[minIndex] = temp;
            return s;
        }
    }

    return s;
}

int main() {
    char s[101];
    scanf("%s", s);
    printf("%s\n", getMinString(s));
    return 0;
}

```

c++算法源码

```cpp
#include 
#include 
#include 

std::string getMinString(std::string s) {
    int n = s.length();

    for (int i = 0; i < n - 1; i++) {
        char minChar = s[i];
        int minIndex = i;

        for (int j = i + 1; j < n; j++) {
            if (s[j] < minChar) {
                minChar = s[j];
                minIndex = j;
            }
        }

        if (minIndex != i) {
            std::swap(s[i], s[minIndex]);
            return s;
        }
    }

    return s;
}

int main() {
    std::string s;
    std::cin >> s;
    std::cout << getMinString(s) << std::endl;
    return 0;
}

```

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/6079.html

(0)
LomuLomu
上一篇 2025 年 1 月 12 日 下午6:35
下一篇 2025 年 1 月 12 日 下午8:06

相关推荐

  • A5433 Java+Jsp+Servlet+MySQL+微信小程序+LW+在线点餐小程序的设计与实现 源码 配置 文档

    在线点餐小程序的设计与实现 1.摘要 2.开发目的和意义 2.1 系统开发目的 2.2 系统开发意义 3.系统功能设计 4.系统界面截图 5.源码获取 1.摘要 摘 要近几年,人们生活水平日益提升,但工作强度和压力不断增强,尤其是对于上班族而言,到餐厅吃饭费时费力,而传统的APP点餐难以适应针对性,基于此,借助Web开发技术以及后台数据库,设计了在线点餐小程…

    2025 年 1 月 11 日
    13800
  • 基于高德地图API在Python中实现地图功能的方法

    本文介绍在高德开放平台 中,申请、获取地图API 的Key 的方法;同时通过简单的Python 代码,调取API 信息,对所得Key 的可用性加以验证。 首先,我们进入高德开放平台 的官方网站。如果大家是第一次使用高德地图开放平台,那么需要点击右上角注册一个开发者账号。 注册完毕后,登录这一账号,并点击如下图紫色框内所示的“控制台 ”。 随后,点击左侧“应用…

    2025 年 1 月 6 日
    19900
  • 华为OD机试E卷 –分苹果 –24年OD统一考试(Java & JS & Python & C & C++)

    文章目录 题目描述 输入描述 输出描述 用例 题目解析 JS算法源码 Java算法源码 python算法源码 c算法源码 c++算法源码 题目描述 A、B 两个人把苹果分为两堆,A 希望按照他的计算规则等分苹果,他的计算规则是按照二进制加法计算,并且不计算进位 12+5=9 (1100 + 0101 = 9),B 的计算规则是十进制加法,包括正常进位,B 希…

    未分类 2025 年 1 月 19 日
    16300
  • IoC究竟是什么?——IoC的基础分析

    IoC全称Inversion of Control,直译为控制反转。这是一种设计理念,并非技术。在明白控制反转之前,应该知道“反转”反的是什么。 被反转的正转 我们从生活中的做饭场景开始。 在家做菜与餐馆吃饭 我们在做饭的时候有很多个步骤,需要准备原料,厨具等等。最后通过一定的顺序加入我们的原料,再进行翻炒等烹饪操作就能够得到一份菜了。我们想吃一份菜不一定需…

    未分类 2025 年 1 月 13 日
    15400
  • 思维导图xmind如何安装?附安装包

    前言 大家好,我是小徐啊。我们在Java开发中,有时候是需要用到思维导图的,这可以帮助我们更好的理清思路,提高开发的效率。而说到思维导图,最有名的就是xmind了,它的功能十分强大,几乎是思维导图里面最强大的那一个。但是,默认只能使用初级功能,高级功能需要额外再开通,今天小徐就来介绍下如何安装xmind以及升级,让我们可以使用pro的功能。文末附获取方式。 …

    2025 年 1 月 11 日
    17900

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信