Python 程序给出了给定字符串中所有可能的子字符串的列表,需要过滤掉不按字母顺序排列的子字符串
我有一个给定字符串中所有可能的子字符串的列表,我只需要按字母顺序打印子字符串Python 程序给出了给定字符串中所有可能的子字符串的列表,需要过滤掉不按字母顺序排列的子字符串,python,string,alphabetical,Python,String,Alphabetical,我有一个给定字符串中所有可能的子字符串的列表,我只需要按字母顺序打印子字符串 s = 'abcabcd' a = len(s) for x in range(a): for y in range(x,a-1): print(s[x:y+2]) 如果我改为: for x in range(a): for y in range(x,a-1): if s[y+1] >= s[y]: print(s[x:y+2]) 我
s = 'abcabcd'
a = len(s)
for x in range(a):
for y in range(x,a-1):
print(s[x:y+2])
如果我改为:
for x in range(a):
for y in range(x,a-1):
if s[y+1] >= s[y]:
print(s[x:y+2])
我得到了完全相同的答案,没有任何东西被过滤掉
目前的结果如下:
ab
abc
abca
阿布卡布
abcabc
abcabcd
卑诗省
bca
bcab
bcabc
bcabcd
ca
驾驶室
cabc
cabcd
ab
abc
abcd
卑诗省
卡介苗
光盘
我希望结果是:
ab
abc
卑诗省
ab
abc
abcd
卑诗省
卡介苗
光盘
只有按字母顺序排列的子字符串。一种可能性是生成所有子字符串,并检查每个子字符串是否使用小写字母:
s = 'abcabcd'
a = len(s)
for x in range(a):
for y in range(x,a-1):
print(s[x:y+2])
import string
sequence = string.ascii_lowercase
# https://stackoverflow.com/questions/22469997/how-to-get-all-the-contiguous-substrings-of-a-string-in-python
all_substrings = [s[i:j+1] for i in xrange(a) for j in xrange(i,a)]
for substr in all_substrings:
if substr in sequence and len(substr) > 1:
print(substr)
输出:
ab
abc
bc
ab
abc
abcd
bc
bcd
cd
只要找到一对顺序正确的字符,就打印子字符串,而不是测试子字符串中的所有字符 您可以使用
all()
函数来测试整个子字符串是否满足要求
s = 'abcabcd'
a = len(s)
for x in range(a):
for y in range(x+2, a+1):
if all(s[z] < s[z+1] for z in range(x, y-1)):
print(s[x:y])
s='abcabcd'
a=len(s)
对于范围(a)内的x:
对于范围(x+2,a+1)内的y:
如果(x,y-1)范围内z的所有(s[z]
当你说字母顺序时,你是指那些字符按字母顺序排列的子字符串吗?e、 g.从示例字符串'abc'
,您希望只输出'abc'
,'abc'
,和'bcd'
?是的,dave,这就是我要找的。谢谢你帮我编辑我的问题。stackedoverflow上的第一个计时器和学习Python的第一周。剩下要打印的字符串是ab abc bc abc abc abc abc bc bcd cdok太好了,请回答问题并将所需的输出包括在问题中abcaef
的输出应该是什么?是否应包括ae
和aef
?这将只查找连续字母的子字符串。如果输入是adea
,它应该打印ad
。感谢您的反馈,我只是根据他的示例中的所有字母顺序来回答,这些字母碰巧也是连续的。注释中的代码不可能读取,甚至不适用于Python,因为它缺少缩进。它看起来和我的一样,除了你在不同的地方对索引进行加减,正确吗。你的是对的,我的原始范围仍然是Python。