博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ARTS打卡计划第一周-Algorithm
阅读量:6072 次
发布时间:2019-06-20

本文共 2093 字,大约阅读时间需要 6 分钟。

import mathclass 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 retif __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。这里主要的思路就是将数字转化为字符串,对字符串反转并且保持符号位。

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

转载于:https://www.cnblogs.com/dongqiSilent/p/10739318.html

你可能感兴趣的文章
修改系统tabbar的高度
查看>>
Git 使用指南
查看>>
背景透明,文字不透明
查看>>
如何删除MYSQL表中的重复数据
查看>>
js中的replace用法
查看>>
Java基础学习总结——Java对象的序列化和反序列化
查看>>
Hadoop集群安装配置教程
查看>>
Android面试题目及其答案
查看>>
node上server与client通讯
查看>>
java源码分析 arraylist 增长机制
查看>>
PLSQL Developer使用技巧
查看>>
oracle库文件建立完整数据库的过程介绍
查看>>
使用系统相机拍照摄像
查看>>
万能字段使用技巧整理
查看>>
session使用
查看>>
Perl正则表达式
查看>>
我的友情链接
查看>>
java代码导入excel数据至oracle(poi方式)
查看>>
工作中常用的英文单词缩写
查看>>
我的友情链接
查看>>