精华内容
下载资源
问答
  • 惭愧啊,今天写了个查找子串Python程序被BS了…如果让你写一个程序检查字符串s2中是不是包含有s1。也许你会很直观的写下下面的代码:#determine whether s1 is a substring of s2def isSubstring1(s1,s2):tag = ...

    惭愧啊,今天写了个查找子串的Python程序被BS了…

    如果让你写一个程序检查字符串s2中是不是包含有s1。也许你会很直观的写下下面的代码:

    #determine whether s1 is a substring of s2

    def isSubstring1(s1,s2):

    tag = False

    len1 = len(s1)

    len2 = len(s2)

    for i in range(0,len2):

    if s2[i] == s1[0]:

    for j in range(0,len1):

    if s2[i]==s1[j]:

    tag = True

    return tag

    可是这是Python,我们可以利用字符串自带的find()方法,于是可以这样:

    def isSubstring2(s1,s2):

    tag = False

    if s2.find(s1) != -1:

    tag = True

    return tag

    悲情的事就在于此,原来Python中的关键字"in”不仅可以用于列表、元祖等数据类型,还可以用于字符串。所以,这里只需要直接一行代码搞定:

    def isSubstring3(s1,s2):

    return s1 in s2

    后知后觉了,惭愧;-)

    类似的,假设要在字符串中,查找多个子串是否存在,并打印出这些串和首次出现的位置:

    def findSubstrings(substrings,destString):

    res = map(lambda x:str([destString.index(x),x]),filter(lambda x:x in destString,substrings))

    if res:

    return ', '.join(list(res))

    ;-) very cool~

    UPDATE: 如果你不习惯最后面这种看起来很复杂的语法也没关系,可以使用列表解析,更加简洁:

    def findSubstrings(substrings,destString):

    return ', '.join([str([destString.index(x),x]) for x in substrings if x in destString])

    展开全文
  • 97. 交错字符串题目给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。示例 1:输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"输出: true示例 2:输入: s1 = "aabcc", s2 = "dbbca", s3 = ...

    97. 交错字符串

    题目

    给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。

    示例 1:

    输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"

    输出: true

    示例 2:

    输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"

    输出: false

    解题思路

    思路:动态规划

    在这里,我们使用 不同路径 这道题的思想去解决问题,向下向右去移动,求得是否存在这样的路径。

    那么这个问题就可以转换为求证,s3 是否能够从向下选取 s1,向右选取 s2,这样的形式,去求得是否存在 s3 这条路径。

    状态定义

    设 dp[i][j] 表示 s1 前 i 个字符和 s2 前 j 个字符能够拼接成 s3(i+j) 个字符,也就是当前路径存在。

    状态转移方程

    如果 s1 的第 i 个元素和 s3 的第 i+j 个元素相等,那么 dp[i][j] 是否成立,则需要看 dp[i-1][j] 是否成立,也就是这里需要看 s1 的前 i-1 个元素和 s2 的前 j 个元素能否拼接成 s3 的前 i+j-1 个元素。

    同样的 如果 s2 的第 j 个元素和 s3 的第 i+j 个元素相等,此时 dp[i][j] 是否成立,则需要看 dp[i][j-1] 是否成立,也就是需要看 s2 的前 i 个元素和 s2 的前 j-1 个元素是否能够拼接成 s3 的前 i+j-1 个元素。

    那么最终的状态转移方程为:

    dp[i][j] = (dp[i-1][j] and s3[i+j-1]=s1[i-1]) or (dp[i][j-1] and s3[i+j-1]=s2[j-1])

    状态初始化

    dp0 = True

    如果 j = 0, dpi 是否成立,取决于 dpi-1 以及 s1 的第 i 个字符是否等于 s3 的第 i 个字符;

    如果 i = 0, dp0 是否成立,取决于 dp0 以及 s3 的第 i 个字符与 s2 的第 i 个字符是否相等。

    具体的实现代码如下。

    代码实现

    class Solution:

    def isInterleave(self, s1: str, s2: str, s3: str) -> bool:

    # 先处理特殊情况,如果 s1 和 s2 的长度和不等于 s3 的长度,则返回 False。因为无法交错拼接

    if len(s1) + len(s2) != len(s3):

    return False

    m = len(s1)

    n = len(s2)

    # 状态定义

    dp = [[False] * (n+1) for _ in range(m+1)]

    # 初始化

    dp[0][0] = True

    for i in range(1, m+1):

    dp[i][0] = dp[i-1][0] and s3[i-1] == s1[i-1]

    for j in range(1, n+1):

    dp[0][j] = dp[0][j-1] and s3[j-1] == s2[j-1]

    for i in range(1, m+1):

    for j in range(1, n+1):

    dp[i][j] = (dp[i-1][j] and s3[i+j-1]==s1[i-1]) or (dp[i][j-1] and s3[i+j-1]==s2[j-1])

    return dp[-1][-1]

    实现结果

    欢迎关注

    公众号 【书所集录】

    展开全文
  • 在leetcode学习过程中,发现leetcode(力扣(LeetCode))中,代码没有输入和输出部分,为了更好的理解python语言,将leetcode中的代码进行了补充,由于本人通过刷27个代码,感觉对python语言已理解差不多,因此没有继续...

    在leetcode学习过程中,发现leetcode(力扣(LeetCode))中,代码没有输入和输出部分,为了更好的理解python语言,将leetcode中的代码进行了补充,由于本人通过刷27个代码,感觉对python语言已理解差不多,因此没有继续。

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

    给出两个 非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

    给定一个字符串,请你找出其中不含有重复字符的 最长子串的长度。

    给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。

    请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。

    你可以假设 nums1 和 nums2 不会同时为空。

    给定一个字符串s,找到s中最长的回文子串。你可以假设 s的最大长度为 1000。6 Z 字形变换

    将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

    请你来实现一个 atoi 函数,使其能将字符串转换成整数。

    首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:

    如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。

    假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。

    该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。

    注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换,即无法进行有效转换。

    在任何情况下,若函数不能进行有效的转换时,请返回 0 。

    判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

    给你一个字符串 s 和一个字符规律 p,请你来实现一个支持'.' 和 '*' 的正则表达式匹配。

    给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

    给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。

    字符 数值

    I 1

    V 5

    X 10

    L 50

    C 100

    D 500

    M 1000

    13 罗马数字转整数

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

    字符 数值

    I 1

    V 5

    X 10

    L 50

    C 100

    D 500

    M 1000

    给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。

    编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。

    给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。

    给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。

    给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

    给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。

    给定一个链表,删除链表的倒数第 n个节点,并且返回链表的头结点。

    给定一个只包括'(',')','{','}','[',']' 的字符串,判断字符串是否有效。

    将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

    给你一个链表数组,每个链表都已经按升序排列。

    请你将所有链表合并到一个升序链表中,返回合并后的链表。

    给你一个链表数组,每个链表都已经按升序排列。

    请你将所有链表合并到一个升序链表中,返回合并后的链表。

    给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

    你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

    给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

    不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

    给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

    不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。

    元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

    展开全文
  • 在[beg, end]范围内查找substring,找到返回substr的起始下标,否则返回 -1。 1 string = 'Hello Python' 2 print(string.find('h', 0, len(string))) # 输出 9 3 print(string.find('thon') ...

    find(substr, beg=0, end=len(string)):

    在[beg, end]范围内查找substring,找到返回substr的起始下标,否则返回 -1。

    1 string = 'Hello Python'
    2 print(string.find('h', 0, len(string)))  # 输出 9
    3 print(string.find('thon')  # 输出 8
    4 print(strin.find('thon', 9, len(string)) # 输出 -1

     

     

    index(substr,beg=0,end=len(string)):

    同find()类似,不同的是,如果未找到substr,则返回一个异常 ValueError: substring not found

    1 string = 'Hello Python'
    2 print(string.index('h', 0, len(string)))  # 输出 9
    3 print(string.index('thon')  # 输出 8
    4 print(strin.index('thon', 9, len(string)) # 抛出异常:ValueError: substing not found

     

    转载于:https://www.cnblogs.com/yangwu-183/p/10042755.html

    展开全文
  • Python字符串查找子串的方法发布于 2015-04-12 08:58:32 | 230 次阅读 | 评论: 0 | 来源: 网友投递Python编程语言Python 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个...
  • 惭愧啊,今天写了个查找子串Python程序被BS了…如果让你写一个程序检查字符串s2中是不是包含有s1。也许你会很直观的写下下面的代码:代码如下:#determine whether s1 is a substring of s2def isSubstring1(s1,s2)...
  • 前两天刚装了python 3.1.1, 禁不住技痒写点code。1.选择排序代码如下:>>> def SelSort(L):length=len(L)for i in range(length-1):minIdx=iminVal=L[i]j=i+1while jif minVal>L[j]:minIdx=jminVal=L[j]j...
  • 惭愧啊,今天写了个查找子串Python程序被BS了…如果让你写一个程序检查字符串s2中是不是包含有s1。也许你会很直观的写下下面的代码:复制代码 代码如下:#determine whether s1 is a substring of s2def ...
  • 主要介绍了Python字符串查找子串小技巧,,需要的朋友可以参考下
  • 惭愧啊,今天写了个查找子串Python程序被BS了…如果让你写一个程序检查字符串s2中是不是包含有s1。也许你会很直观的写下下面的代码:代码如下:#determine whether s1 is a substring of s2def isSubstring1(s1,s2)...
  • 惭愧啊,今天写了个查找子串Python程序被BS了…如果让你写一个程序检查字符串s2中是不是包含有s1。也许你会很直观的写下下面的代码:代码如下:#determine whether s1 is a substring of s2def isSubstring1(s1,s2)...
  • python 字符串查找子串

    千次阅读 2016-04-02 11:27:11
    # -*- coding:UTF-8 -*-... 字符串查找子串的方法 检查字符串s2中是不是含有s1 """ # 方法1: def is_sub_string1(s1, s2): tag = False len1 = len(s1) len2 = len(s2) for i in range(0, len2): if s2[i] ==
  • 08-02 14:44 −https://blog.csdn.net/jiangjiang_jian/article/details/79453856 [s[i:i + x + 1] for x in range(len(s)) for i in range(len(s) - x)] ...21795相关推荐2019-09-28 21:13 −Python pyth...
  • python3字符串子串查找、替换、删除、分割、连接相关方法[复制链接]python3字符串子串查找、替换、删除、分割、连接相关方法# 字符串查找、替换、删除相关方法#----- 查找相关方法----s ='crazyit.org is a ...
  • Life needs to stop sometimes— —happinessDREAM.2020字符串的作用字符串Python 中最常用的数据类型。我们一般使用引号来创建字符串。创建字符串很简单,只要为变量分配一个值即可。01认识字符串认识字符串a = ...
  • Python 的字符串类有个很好用的函数,可很方便的用于与查找Python字符串类型对象子串相关的操作,具体的API如下: | find(...) | S.find(sub [,start [,end]]) -> int | | Return the lowest index in S ...
  • https://blog.csdn.net/jiangjiang_jian/article/details/79453856 [s[i:i + x + 1] for x in range(len(s)) for i in range(len(s) - x)] 转载于:...
  • python在utf-8下 中文字符串查找子串

    千次阅读 2014-04-07 20:49:25
    一个问题:utf-8编码下 ,两个unicode字符串
  • Ronald Isley - Project Windows.mp3'] 每个文件名都是一个字符串。 我希望能够查看songs列表,如果列表中的一项与songs列表中的内容匹配filenames,请将该文件重命名为歌曲的名称。 解决方案 这是一个将保留文件...
  • Python字符串查找

    千次阅读 2017-04-11 15:32:30
    Python字符串查找python 字符串查找有4个方法:find()、index()、rfind()、rindex()。 find()方法:是在字符串里查找子串第一次出现的位置,若找到返回从0开始的下标值,若找不到返回-1。 index()方法:是在字符串里...
  • python 字符串查找的4个方法和count函数所谓的字符串查找方法就是查找子串在字符串中的位置和出现的次数python 字符串查找有4个方法,1 find方法, 2 index方法,3 rfind方法, 4 rindex方法。1.find()find()检测...
  • 如果我有一个字符串集合,那么有一个数据结构或函数可以提高检查集合中的任何元素是否是我的主字符串上的子字符串的速度?现在我循环遍历我的字符串数组并使用in运算符.有更快的方法吗?import timing## string match...
  • 本篇文章小编给大家分享一下Python字符串查找基本操作案例解析,文章介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。字符串查找基本操作主要分为三个关键词:find()、...
  • python字符串查找

    2014-08-20 20:16:11
    python字符串查找有四种方法:1.find 2.index 3.rfind 4.rindex 1.find():查找字符串,若找到返回从0开始的下标,找不到返回-1  info = 'abca'  print info.find('a')##从下标0开始,查找在字符串里第一个出现...
  • python 字符串查找的4个方法和count函数所谓的字符串查找方法就是查找子串在字符串中的位置和出现的次数python 字符串查找有4个方法,1 find方法, 2 index方法,3 rfind方法, 4 rindex方法。1.find()find()检测...
  • b in splits for c in alphabet if b] inserts = [a + c + b for a, b in splits for c in alphabet] return set(deletes + transposes + replaces + inserts) 现在,在列表中查找所有这些编辑。 彼得的文章读得很...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 438
精华内容 175
关键字:

python字符串查找子串

python 订阅