[python3] 记录一下自己写的屎

  1. Longest Palindromic Substring
    Medium

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

Example 1:

Input: “babad”
Output: “bab”
Note: “aba” is also a valid answer.
Example 2:

Input: “cbbd”
Output: “bb”

class Solution(object):
    def longestPalindrome(self, s):
        """
        :type s: str
        :rtype: str
        """
        #欠款代码
        fflag = 0
        biggest_length = ''
        flag = 0
        if len(s) == 1 or len(s) ==0:
            return s
        for i in range(len(s)-1):    #range(0) 问题
            if flag == 1 and i == flagi :
                
                flag = 1 #flag == 0 -->> single number list
            if fflag == 0:
                own_length = s[i]
            
            
            #对每一个i进行一样的操作.
            #对于偶数的不通过回文测试但还能再加一个数的。只在全部相等并两边的至少有一边还有边界时考虑就行 
            if s[i] == s[i+1] and fflag == 0:
                flag = 1 #flag == 1 -->> double number list
                flagi = i+1
                own_length = s[i:i+2]
                fflag = 1
                continue
            elif s[i] != s[i+1] and len(s) == 2:
                return s[0]
            
                
            fflag = 0
            
            for j in range(2, len(s)):
                print(own_length)
                print(flag)
                print(i,j)
                print(i-j+1,i+j-1)
                if i-j+2 >= 0 and i+j < len(s) and flag ==0:    #单数
                    if s[i-j+2] == s[i+j]:
                        # own_length = 2*j - 1
                        own_length = s[i-j+2:i+j+1]
                
                elif i-j+1 >=0 and i+j < len(s) and flag == 1 and i-j+1 >= 0:    #双数
                    if s[i-j+1] == s[i+j]:
                        # own_length = 2*j+2
                        own_length = s[i-j+1:s[i+j+1]]
                    

                    else:
                        if len(own_length) > len(biggest_length):
                            biggest_length = own_length
                        break
                
                elif len(set(own_length)) == 1 and len(own_length) >1 and flag == 1 and i-j+1>=0 and i+j-1 < len(s): #记下来
                    print('g')
                    if s[i-j+1] == s[i-j+2]:
                        print('o1')
                        # own_length = 2*j +1
                        own_length = s[i-j+1:i+j]
                        if len(own_length) > len(biggest_length):
                            biggest_length = own_length
                        break
                    if s[i+j] == s[i+j-1]:
                        print('o2')
                        # own_length = 2*j +1
                        in_length = s[i-j+2:i+j+1]
                        if len(own_length) > len(biggest_length):
                            biggest_length = own_length
                        break

                    
                else:
                    print('ok')
                    if len(own_length) > len(biggest_length):
                        biggest_length = own_length
                    break

                if len(own_length) > len(biggest_length):
                    biggest_length = own_length
            if len(own_length) > len(biggest_length):
                biggest_length = own_length
            
        if len(own_length) > len(biggest_length):
            biggest_length = own_length
        
        return biggest_length

没好好构思好就动手写的代码都是屎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值