前言:
眼前小伙伴们对“数据结构python版填空题”可能比较关切,看官们都需要分析一些“数据结构python版填空题”的相关文章。那么小编在网摘上汇集了一些关于“数据结构python版填空题””的相关文章,希望看官们能喜欢,姐妹们一起来学习一下吧!注:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性。
本文阅读时间约为5分钟。
给定一个字符串s与待查找字符串p,请给出使得s[i:i+len(p)]是p的一个字母重排的所有下标i。
题目保证字符串p非空。
输入格式:
两行字符串,第一行为s,第二行为p。
输出格式:
所有满足条件的下标从小到大排列,以空格分隔输出。
若无对应下标,则输出"none"。
输入样例:
cbaebabacdabc
输出样例:
0 6
参考代码模板:
def findAnagrams(s, p): # code here pass s = input()p = input()findAnagrams(s, p)
解答:本题的关键在于如何判断一个字符串s的子串s[i:i+len(p)]是另一个字符串p的字母重排,也就是如何判断两个字符串互为对方的字母重排。我们可以利用集合的无序特性,简单直接地来实现这个判断,即
set(p) == set(s[i:i+len(p)])
满足上述表达式的p和s必然满足“字符串s的子串s[i:i+len(p)]是字符串p的字母重排”这一要求。
解决这个问题,本题也就简单了。
参考代码如下:
def findAnagrams(s, p): # code here s1 = '' # 备用字符串。 for i in range(len(s)): # 利用集合的特性判断s[i:i+len(p)]是否为p的字母重排。 if set(p) == set(s[i:i+len(p)]): s1 += str(i) if s1 == '': # 若无对应下标i,则输出"none"。 print('none') else: # 若有对应下标i,将所有满足条件的下标i从小到大排列,以空格分隔输出。 print(' '.join(s1)) s = input()p = input()findAnagrams(s, p)# 测试数据如下:# s = 'cbaebabacd'# p = 'abc'
To be continued.
标签: #数据结构python版填空题