zoukankan      html  css  js  c++  java
  • leetcode1328

     1 class Solution:
     2     def breakPalindrome(self, palindrome: str) -> str:
     3         n = len(palindrome)
     4         if n <= 1:
     5             return ''
     6         half = n // 2
     7         sub = palindrome[0:half]#不包含index==half的字符
     8         
     9         for i in range(len(sub)):
    10             c = palindrome[i]
    11             if ord(c) > ord('a'):
    12                 palindrome = palindrome[0:i] + 'a' + palindrome[i+1:]
    13                 return palindrome
    14         begin = half if n % 2 == 0 else (half + 1)
    15         for j in range(n-1,begin-1,-1):
    16             c = palindrome[j]
    17             if ord(c) < ord('z'):
    18                 palindrome = palindrome[0:j] + chr(ord(c) + 1) + palindrome[j+1:]
    19                 return palindrome
    20         return ''

    算法类型:字符串处理。

    思路分析:将回文字符串分为前后两个部分,

    1先遍历前半部分:将第一个大于'a'的字符转变为a;

    如果前半部分没有找到,则将遍历后半部分:将最后一个小于'z'的字符转变为字符+1。

    如果两个部分都没有合适的值,则返回空。

  • 相关阅读:
    【转载】褪去华衣 裸视学习 探讨系列
    最简单的视频网站(JavaEE+FFmpeg)
    过段时间要换博客了
    计网3
    计网1
    物理层计算题
    计网4
    子网划分与CIDR
    百度=残留在墙后的垃圾
    计网2
  • 原文地址:https://www.cnblogs.com/asenyang/p/12233707.html
Copyright © 2011-2022 走看看