zoukankan      html  css  js  c++  java
  • ARTS打卡计划第一周-Algorithm

    7. Reverse Integer

    import math
    class Solution:
        def reverse(self, x: int) -> int:
            ret = 0
            if x >=0:
                x_str = str(x)
                ret =  int(x_str[::-1])
            else:
                x =abs(x)
                x_str=str(x)
                ret =  -1*int(x_str[::-1])
            if ret>=math.pow(2,31)-1 or ret<=-1*math.pow(2,31):
                    return 0
            else:
                return ret
    
    if __name__ == '__main__':
        s = Solution()
        print(s.reverse(123))
        print(s.reverse(-123))
        print(s.reverse(120))
        print(s.reverse(-120))
        print(s.reverse(1534236469))
    

      这里出错的基本都是题目没看清楚,题目说的是如果反转溢出后返回0。这里主要的思路就是将数字转化为字符串,对字符串反转并且保持符号位。

    859. Buddy Strings

    class Solution:
        """
        1、如果AB长度不一样,直接返回fasle
        2、考虑A,B长度小于2返回false
        3、如果A,B长度相等,如果A中每个字符均不相同返回false
        4、变量A,B,看最终不同的字符个数是不是2,不是2返回false
            ,如果是2的话,看2者能否交换,能交换就是true,否则是false
    
        """
        def buddyStrings(self, A: str, B: str) -> bool:
            if len(A)!=len(B):
                return False
            if len(A)<2 or len(B) <2:
                return False
    
            listA = list(A)
            listB = list(B)
            listAret =[]
            listBret=[]
    
            if A==B:
                if len(A) !=len(set(A)):
                    return True
                else:
                    return False
                
    
            for idx,val in enumerate(listA):
               if val != listB[idx]:
                   listAret.append(val)
                   listBret.append(listB[idx])
            
            if len(listAret)!=len(listBret):
                return False
    
            if len(listAret)!=2:
                return False
            
            if listAret[0]==listBret[1] and listAret[1]==listBret[0]:
                return True
            return False
            
    
               
    if __name__=="__main__":
        s = Solution();
        print(s.buddyStrings("ab","ba"))
        print(s.buddyStrings("abcd","abcd"))
        print(s.buddyStrings("ab","ab"))
        print(s.buddyStrings("aa","aa"))   
        print(s.buddyStrings("aaaaaaabc","aaaaaaacb"))      
        print(s.buddyStrings("","aa"))      
     
    

      此题侧重于策略的选择:

    1、如果AB长度不一样,直接返回fasle
    2、考虑A,B长度小于2返回false
    3、如果A,B长度相等,如果A中每个字符均不相同返回false
    4、变量A,B,看最终不同的字符个数是不是2,不是2返回false
    ,如果是2的话,看2者能否交换,能交换就是true,否则是false
  • 相关阅读:
    【转】动态模型及其求解介绍–番外篇
    【转】动态模型及其求解介绍—下
    Belief propagation
    隐马尔科夫模型(Hidden Markov Models) 系列之一
    隐马尔科夫模型(Hidden Markov Models) 系列之四
    【PGM】factor graph,因子图,势函数potential function,Template models
    词语搭配系统
    PHP Catalan数的几个应用
    PHP 求链表并集
    PHP 输入n,判断从1~n序列中十进制数里1出现的次数
  • 原文地址:https://www.cnblogs.com/dongqiSilent/p/10739318.html
Copyright © 2011-2022 走看看