前言

每天和你一起刷 LeetCode 每日一题~

LeetCode 启动!

【LeetCode】每日一题 2024_10_30 交换后字典序最小的字符串(字符串、贪心)-LMLPHP

题目:交换后字典序最小的字符串

【LeetCode】每日一题 2024_10_30 交换后字典序最小的字符串(字符串、贪心)-LMLPHP

代码与解题思路

先读题:最多交换一次 相邻 且具有相同 奇偶性 的数字,获得字典序最小的字符串,不难想到,遍历字符串,在遇到第一个符合该性质的字符进行交换就是最优的结果(因为字典序越靠前优先级越高)

两个小技巧:

1、golang 的 swap 不好用,我们一般通过 golang 的语法小技巧进行 swap 操作:a, b = b, a

2、对字符直接进行操作实际上是对其 ASCII 码进行操作,而 ‘0’ 的 ASCII 码是 48,正好是偶数,所以,可以直接对字符进行奇偶判断以及大小的判断,不用转换成整数再操作

func getSmallestString(s string) string {
    b := []byte(s)
    for i := 1; i < len(s); i++ {
        x, y := b[i-1], b[i]
        if x&1 == y&1 && x > y {
            b[i], b[i-1] = b[i-1], b[i]
            break
        }
    }
    return string(b)
}

突然看到,今天也是我坚持每日一题 365 天纪念日~

也不知道每日一题能陪伴我多长时间

【LeetCode】每日一题 2024_10_30 交换后字典序最小的字符串(字符串、贪心)-LMLPHP

每天进步一点点,我们明天不见不散~

10-30 12:55