LeetCode初级算法的Python实现--字符串
LeetCode初级算法的Python实现--字符串
# 反转字符串
def reverseString(s):
    return s[::-1]
# 颠倒数字
def reverse(x):
    if x < 0:
        flag = -2 ** 31
        result = -1 * int(str(x)[1:][::-1])
        if result < flag:
            return 0
        else:
            return result
    else:
        flag = 2 ** 31 - 1
        result = int(str(x)[::-1])
        if result > flag:
            return 0
        else:
            return result
# 字符串中的第一个唯一字符
def firstUniqChar(s):
    d = {}
    for i in range(len(s)):
        d[s[i]] = d.get(s[i], 0) + 1
    for i in range(len(s)):
        if d[s[i]] == 1:
            return i
    return -1
# 有效的字母异位词
def isAnagram(s, t):
    if len(t) != len(s):
        return False
    if len(set(t)) != len(set(s)):
        return False
    for ex in set(t):
        if s.count(ex) != t.count(ex):
            return False
    return True
# 验证回文字符串
def isPalindrome(s):
    import re
    s = s.lower()
    newS = re.sub(r'[^A-Za-z0-9]', "", s)
    if newS[::-1] == newS:
        return True
    else:
        return False
# 字符串转整数(atoi)
def myAtoi(str):
    import re
    if re.match('\s+', str) != None:
        a, b = re.match('\s+', str).span()
        str = str[b:]
    if str == '':
        return 0
    flag = True
    if str[0] == '-':
        str = str[1:]
        flag = False
    elif str[0] == '+':
        str = str[1:]
    if re.match('\d+', str) != None:
        a, b = re.match('\d+', str).span()
        str = str[a:b]
        if flag == True:
            if int(str) > 2 ** 31 - 1:
                return 2 ** 31 - 1
            return int(str)
        else:
            if -1 * int(str) < -2 ** 31:
                return -2 ** 31
            return -1 * int(str)
    else:
        return 0
# 实现 strStr() 函数。
def strStr(haystack, needle):
    if len(needle) == 0:
        return 0
    for i in range(len(haystack) - len(needle) + 1):
        if haystack[i:i + len(needle)] == needle:
            return i
    return -1
# 数数并说
def countAndSay(n):
    keyStr = '1'  # 从1开始
    for i in range(n - 1):  # 循环n次
        newStr = ""  # 存储新的字符
        strList = []  # 循环一个字符串下来获取每个字符的个数
        sList = []  # 相同字符的个数
        flag = True
        for j in range(len(keyStr) - 1):  # 循环字符的长度减一 flag表示默认最后一个字符和前面一个字符不同,
            sList.append(keyStr[j])
            sList.append(1)
            if keyStr[j] == keyStr[j + 1]:  # 如果当前位置的字符和下一个位置的字符相同
                sList[1] += 1
                flag = False
            else:
                strList.append(sList)  # 不同的话 将上一个字符的情况存储进列表
                sList = []
                flag = True
        if flag:  # 如果最后一个字符和前一个字符不同,则将字符情况加入
            strList.append([keyStr[-1], 1])
        else:
            if sList != []:  # 最后一串相同字符加入列表
                strList.append(sList)
        for k in range(len(strList)):  # 将列表的字符按顺序取出
            newStr = newStr + '' + str(strList[k][1])
            newStr = newStr + '' + strList[k][0]
        keyStr = newStr
    return keyStr
# 最长公共前缀
def longestCommonPrefix(strs):
    if strs == []:
        return ''
    lenKey = len(strs[0])
    key = 0
    longest = 0
    for i in range(1, len(strs)):
        if len(strs[i]) < lenKey:
            key = i
            lenKey = len(strs[i])
    for i in range(len(strs[key])):
        flag = True
        for j in range(len(strs)):
            if strs[j][i] != strs[key][i]:
                flag = False
        if flag:
            longest += 1
        else:
            break
    return strs[key][0:longest]												
											LeetCode初级算法的Python实现--字符串的更多相关文章
- LeetCode初级算法的Python实现--链表
		
LeetCode初级算法的Python实现--链表 之前没有接触过Python编写的链表,所以这里记录一下思路.这里前面的代码是和leetcode中的一样,因为做题需要调用,所以下面会给出. 首先定义 ...
 - LeetCode初级算法的Python实现--排序和搜索、设计问题、数学及其他
		
LeetCode初级算法的Python实现--排序和搜索.设计问题.数学及其他 1.排序和搜索 class Solution(object): # 合并两个有序数组 def merge(self, n ...
 - LeetCode初级算法的Python实现--数组
		
LeetCode初级算法的Python实现--数组 # -*- coding: utf-8 -*- """ @Created on 2018/6/3 17:06 @aut ...
 - LeetCode初级算法的Python实现--动态规划
		
动态规划的本质是递归:所以做题之前一定要会递归:递归式就是状态转移方程:这里将会介绍使用动态规划做题的思维方式. 统一的做题步骤: 1.用递归的方式写出代码:(此方法写的代码在leetcode中一定会 ...
 - LeetCode初级算法--字符串01:反转字符串
		
LeetCode初级算法--字符串01:反转字符串 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...
 - LeetCode初级算法--字符串02:字符串中的第一个唯一字符
		
LeetCode初级算法--字符串02:字符串中的第一个唯一字符 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog. ...
 - 【LeetCode算法】LeetCode初级算法——字符串
		
在LeetCode初级算法的字符串专题中,共给出了九道题目,分别为:反转字符串,整数反转,字符串中的第一个唯一字符,有效的字母异位词,验证回文字符串,字符串转换整数,实现strStr(),报数,最 ...
 - LeetCode初级算法--其他02:有效的括号
		
LeetCode初级算法--其他02:有效的括号 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net ...
 - LeetCode初级算法--数组01:只出现一次的数字
		
LeetCode初级算法--数组01:只出现一次的数字 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn. ...
 
随机推荐
- shell 脚本中后台执行命令 &
			
最近遇到一个问题, 执行脚本,脚本调用 一个命令,命令(deamon)是一个守护进程,为了调试,取消了守护进程模式.导致命令后边的其他命令(echo "456")都无法执行. de ...
 - typeof操作符和instanceof操作符的区别                                                                                                         标签:               JavaScript                                            2016-08-01 14:21             113人阅读              评论(
			
typeof主要用于检测变量是不是基本数据类型 typeof操作符是确定一个变量是字符串.数值.布尔类型,还是undefined的最佳工具.此外,使用typeof操作符检测函数时,会返回"f ...
 - Entity Framework: 主从表的增删改
			
1.根据主表添加从表数据 var dest = (from d in context.Destinations where d.Name == "Bali" select d).S ...
 - 经典优秀屏幕截图录像工具FastStone Capture推荐
			
FastStone Capture (FSCapture) 是经典好用的屏幕截图软件,还具有图像编辑和屏幕录制两大功能. FastStone Capture 主要功能 包括:1.截图功能(可以捕捉:活 ...
 - 什么是Github的元数据metadata以及如何备份github上的数据
			
github被微软收购后,提供的工具种类是越来越多了,大大提高了我们程序员日常工作的效率. 今天我偶然发现,我们可以一键把自己整个github上的数据,不仅仅是代码,还包含每个仓库里创建的issue都 ...
 - (转)C++ 自由存储区是否等价于堆?
			
“free store” VS “heap” 当我问你C++的内存布局时,你大概会回答: “在C++中,内存区分为5个区,分别是堆.栈.自由存储区.全局/静态存储区.常量存储区”. 如果我接着问你 ...
 - Oracle中序列的操作以及使用前对序列的初始化
			
Oracle中序列的操作以及使用前对序列的初始化 一 创建序列 create sequence myseq start with 1 increment by 1 nomaxvalue minva ...
 - Vue通过input筛选数据
			
<div id="app"> <input v-model='search' /> <ul> <li v-for="item i ...
 - Redis数据类型(下)
			
集合Set Redis 的集合不是 个线性结构,而是一个哈希表结构,它的内部会根据 hash 分子来 存储和查找数据,理论上 个集合可以存储 232 (大约 42 亿)个元素,因为采用哈希表结 ...
 - iOS原生混合RN开发最佳实践
			
iOS原生混合RN开发详解 做过原生iOS开发或者Android开发的同学们肯定也都了解Hybrid,有一些Hybrid的开发经验,目前我们企业开发中运用最广泛的Hybrid App技术就是原生与H5 ...