zoukankan      html  css  js  c++  java
  • 1328破坏回文串

    题目:给你一个回文字符串 palindrome ,请你将其中 一个 字符用任意小写英文字母替换,使得结果字符串的字典序最小,且 不是 回文串。请你返回结果字符串。如果无法做到,则返回一个空串。
    链接:https://leetcode-cn.com/problems/break-a-palindrome

    法一:自己的代码

    思路:题目中说的字典序可以理解成‘a’对应1,‘b’对应2,而字典序最小就是字符串对应的数字值最小,如ab大于aa,因为12大于11,可以理解成1到9的数字排列成最小。所以字典序最小有两种情况一种是在字符串的前半段出现非a的字符了,则直接将其改为a即可,因为只能改一个字符,优先改高位的它会变的更小,另一种是全是a(奇数个时中间可以不是a),这时修改最后一个a为b,其字典序最小。

    # 执行用时 :24 ms, 在所有 Python3 提交中击败了98.26% 的用户
    # 内存消耗 :13 MB, 在所有 Python3 提交中击败了100.00%的用户
    class Solution:
        def breakPalindrome(self, palindrome: str) -> str:
            size = len(palindrome)
            # 特判,如果长度为1,直接返回''
            if size == 1:
                return ''
            mid = size // 2
            for i,j in enumerate(palindrome):
                # 如果还没有达到中间位置,这里奇偶的中间位置一样,则继续
                if j == 'a' and i != mid:
                    continue
                elif i < mid:
                    return palindrome[:i] + 'a' + palindrome[i+1:]
                else:
                    # 这时只有两种情况 aaaa  aasaa,这两种都要把最后一个字符改为'b'
                    return palindrome[0:-1] + 'b'
    if __name__ == '__main__':
        duixiang = Solution()
        # a = duixiang.breakPalindrome("abcocba")
        # a = duixiang.breakPalindrome("a")
        # a = duixiang.breakPalindrome("aabaa")
        a = duixiang.breakPalindrome("aataa")
        # a = duixiang.breakPalindrome("aaa")
        print(a)
    View Code

    ttt

  • 相关阅读:
    minix中的文件锁
    minix代码中conv2()函数的作用
    ClassView中视图类框架类不见了的解决方法
    minix中的GDT,LDT,IDT和TSS
    MFC dlg窗口按回车(Enter)键和ESC键会退出解决方法
    MongoDB文档、集合、数据库简介
    Windows下MongoDB环境搭建
    【译】RabbitMQ:"Hello World"
    转载 jQuery技巧
    android call webservice by ksoap 实例代码
  • 原文地址:https://www.cnblogs.com/xxswkl/p/12301724.html
Copyright © 2011-2022 走看看