类型:数组
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。
示例 1:
输入: "abab"
输出: True
解释: 可由子字符串 "ab" 重复两次构成。
示例 2:
输入: "aba"
输出: False
示例 3:
输入: "abcabcabcabc"
输出: True
解释: 可由子字符串 "abc" 重复四次构成。 (或者子字符串 "abcabc" 重复两次构成。)
这里我们观察到一个现象,对于一个字符串s,我们将两个该字符串连接成一个更长的字符串(s_double),该字符串中至少包含两个s子串,如果s可以由多个重复单元构成,那么合并后的字符串中一定包含超过两个s子串(可重叠),例如,两个"abab"组成的"abababab"中包含3个"abab",而两个"aba"组成的"abaaba"则只包含两个"aba",根据这个原理,我们只需要统计s+s中s(可重叠)出现的次数,并与2比较即可。
这里为了简化计算,我们把s+s的首尾两端字符去掉,这样就只需要查看s是否在剩余的字符串中即可。编码时通过索引范围[1:len(s)*2-1]起到去掉首尾两端字符的效果。
如有疑问或建议,欢迎评论区留言~
A = ["cha", "chb", "chc", "cha123", "chabc", "chc-12345"]B = ["chd", "che", "ch169", "c123"]
s = "cha123" # the string you get
if s in A:
print("A")
elif s in B:
print("B")
else:
print("Not in A or B")
比较简单的一个例子,把几个同为一类的组成一个列表,然后用in判断字符串是否在对应的列表中有出现。
希望对你有所帮助~
您好,python中s[1][1]的意思是,s是一个列表,s[1]表示的是列表的第二个元素,而s[1][1]表示的是第二个元素中的第二个元素,也就是说s[1][1]表示的是列表中的第三个元素。例如,如果s = [1,2,3,4],那么s[1][1]就表示的是3,也就是列表中的第三个元素。因此,python中s[1][1]的意思就是表示列表中的第三个元素。