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实现--字符串的更多相关文章

  1. LeetCode初级算法的Python实现--链表

    LeetCode初级算法的Python实现--链表 之前没有接触过Python编写的链表,所以这里记录一下思路.这里前面的代码是和leetcode中的一样,因为做题需要调用,所以下面会给出. 首先定义 ...

  2. LeetCode初级算法的Python实现--排序和搜索、设计问题、数学及其他

    LeetCode初级算法的Python实现--排序和搜索.设计问题.数学及其他 1.排序和搜索 class Solution(object): # 合并两个有序数组 def merge(self, n ...

  3. LeetCode初级算法的Python实现--数组

    LeetCode初级算法的Python实现--数组 # -*- coding: utf-8 -*- """ @Created on 2018/6/3 17:06 @aut ...

  4. LeetCode初级算法的Python实现--动态规划

    动态规划的本质是递归:所以做题之前一定要会递归:递归式就是状态转移方程:这里将会介绍使用动态规划做题的思维方式. 统一的做题步骤: 1.用递归的方式写出代码:(此方法写的代码在leetcode中一定会 ...

  5. LeetCode初级算法--字符串01:反转字符串

    LeetCode初级算法--字符串01:反转字符串 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...

  6. LeetCode初级算法--字符串02:字符串中的第一个唯一字符

    LeetCode初级算法--字符串02:字符串中的第一个唯一字符 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog. ...

  7. 【LeetCode算法】LeetCode初级算法——字符串

      在LeetCode初级算法的字符串专题中,共给出了九道题目,分别为:反转字符串,整数反转,字符串中的第一个唯一字符,有效的字母异位词,验证回文字符串,字符串转换整数,实现strStr(),报数,最 ...

  8. LeetCode初级算法--其他02:有效的括号

    LeetCode初级算法--其他02:有效的括号 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net ...

  9. LeetCode初级算法--数组01:只出现一次的数字

    LeetCode初级算法--数组01:只出现一次的数字 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn. ...

随机推荐

  1. React Router V4.0学习笔记

    最近在学习React Router,但是网站的教程多半还是3.X版本之前的,所以我只能在GitHub上找到React Router的官方文档在读.后来总结了一下,包括学习经验以及V3.X与V4.X的差 ...

  2. IDEA 搭建Java WEB 开发环境

    本文是一篇讲解如何在 目前比较流行的IntellJ IDEA 下搭建JavaWEB的说明文档, 如有写的不详细的地方,希望各位留下自己宝贵的意义. Tips : 遇到的问题 , 请耐心看完文章,在文章 ...

  3. 在WAS控制台,环境下添加新的虚拟主机别名

    错误现象: 11/16/13 16:52:22:612 CST] 00000021 util          W com.ibm.ws.webcontainer.util.VirtualHostCo ...

  4. eclipse run on server 时 报的错误APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!

    写这篇日记记录一下自己的愚蠢行为. 具体报错如下: 信息: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ ...

  5. 误用MySQL关键字导致的错误

    使用Hibernate整合Spring的过程中,我使用explain作为表的字段,结果一直给我报错. 报错如下: ERROR: You have an error in your SQL syntax ...

  6. JDBC(3)ResultSet

    ResultSet 在执行查询(select)时候使用 这是一个结果对象,该对象包含结果的方法但指针定位到一行时 调用Statement 对象的 executeQuery(sql)可以得到结果集 可以 ...

  7. Java 和 .NET SHA1算法记录

    最近做了一个.NET访问Java接口的小Demo,其中用到了SHA1加密,大体思路就是.NET 传一些参数然后SHA1加密,Java端接收到之后在SHA1加密对比. Java代码: public fi ...

  8. 手绘web原型设计的感受

    当下有许多流行的Web原型设计工具,比如mockplus等,mockplus在我们团队初次开发rms系统用到过,确实还不错,但是,原型工具有其优势也有其劣势. 礼拜一开会时,经理跟我说,觉得现在的LM ...

  9. C语言scanf与get char,gets的区别

    C语言scanf与get char,gets的区别 1.scanf() scanf是C语言的格式输入函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息.可以读入任何固有类型的数据并 ...

  10. 【AngularJS学习笔记】开发时候的建议目录结构,基本开发步骤

    项目目录结构划分 Debug Node.JS的生成目录 Node_modules Node.Js的依赖项 Src 项目源文件 ----|framework  项目框架 --------|app --- ...