列表
1、回文子串变形1
# str = input() # n = len(str) # list = [] # for i in range(0,n-1): # for j in range(1,n): # if str[j] == str[i] and str[i+1:j] == str[j-1:i:-1]: # list.append(len(str[i:j+1])) # print(max(list)) # # # ABBA ->4 # #ABBBA ->5 # #12HHHHA ->4 ############################################ # 从右到左,对每个字符进行遍历处理,并且每个字符要处理两次,因为回文子串有两种情况: # ABA型:只需要从当前字符向两边扩散,比较左右字符是否相等,找出以当前字符为中心的最长回文子串长度 # ABBA型:只需要从当前字符和下一个字符向两边扩散,比较左右字符是否相等,找出以当前字符和下一个字符为中心的最长回文子串长度 # 最后比对两种类型的长度,取自较长的长度 s = input() out = 0 for i in range(0, len(s)): # 双指针 k = i - 1 j = i + 1 len_ABA = 1 while k >= 0 and j < len(s): if s[k] == s[j]: k -= 1 j += 1 len_ABA += 2 else: break k = i j = i + 1 len_ABBA = 0 while k >= 0 and j < len(s): if s[k] == s[j]: k -= 1 j += 1 len_ABBA += 2 else: break now_len = max(len_ABA, len_ABBA) if out < now_len: out = now_len print(out) ############################################## while 1: try: a=input() # 设置初始步长 bc=0 # 逆序比较 if a==a[::-1]: print(len(a)) else: # 不断增加步长,比较回文 #每次增加步长,循环查找有没有比这个步长更长的回文,如果有,继续找,直到找完所有的回文为止 for i in range(len(a)): # 优先查看两个增加两个长度的回文是否存在 if i-bc>=1 and a[i-bc-1:i+1]==a[i-bc-1:i+1][::-1]: bc+=2 # 如果增加两个长度的没找到,再查看两个增加一个长度的回文是否存在 elif i-bc>=0 and a[i-bc:i+1]==a[i-bc:i+1][::-1]: bc+=1 print(bc) except: break ############################################ str_input = input() if str_input == str_input[::-1]: print(len(str_input)) else: data_list = [] for i in range(len(str_input) - 1): for j in range(1, len(str_input)): if str_input[i] == str_input[j] and str_input[i + 1:j] == str_input[j - 1:i:-1]: data_list.append(len(str_input[i:j + 1])) print(max(data_list)) ########################################################### str = input() n = len(str) list = [] # range和字符串[0:3]取值都是最后一位不取值 for i in range(0, n - 1): for j in range(1, n): # 首先判定截取字符串的第一个特性,首位位置的字符相同, # 第二个特性,从左到右取数和从右到左取数,完全对称 if str[j] == str[i] and str[i + 1:j] == str[j - 1:i:-1]: list.append(len(str[i:j + 1])) # print(list) print(max(list)) ################################################ def expand(s, i, j): while i >= 0 and j < len(s) and s[i] == s[j]: i -= 1 j += 1 return i + 1, j - 1 while True: try: s = input() max_lens = 0 for i in range(len(s)): l1, r1 = expand(s, i, i) l2, r2 = expand(s, i, i + 1) if r1 - l1 + 1 > max_lens: max_lens = r1 - l1 + 1 if r2 - l2 + 1 > max_lens: max_lens = r2 - l2 + 1 print(max_lens) except: break ############################################################ str1 = input() list1 = [] n = 1 for i in str1[1:-1]: a = 1 b = 0 c = 1 d = 0 while True: try: if str1[n - c] == str1[n + c]: a = a + 2 c = c + 1 elif str1[n - d] == str1[n + d + 1]: b = b + 2 d = d + 1 else: list1.append(a) list1.append(b) n = n + 1 break except: list1.append(a) list1.append(b) break ###################################### import sys # 对字符串中的每一个字符遍历,首先判断是奇数回文串还是偶数回文串,再向两边拓展,判断并记录回文串的长度 def action(mm): maxx = 0 for i in range(1, len(mm) - 1): if mm[i] == mm[i - 1]: j = 1 while i + j <= len(mm) - 1 and i - 1 - j >= 0: if mm[i + j] == mm[i - 1 - j]: if maxx < 2 * j + 2: maxx = 2 * j + 2 j += 1 else: break if mm[i] == mm[i + 1]: j = 1 while i + 1 + j <= len(mm) - 1 and i - j >= 0: if mm[i + 1 + j] == mm[i - j]: if maxx < 2 * j + 2: maxx = 2 * j + 2 j += 1 else: break if mm[i] == mm[i + 1] and mm[i] == mm[i - 1]: j = 1 while i + 1 + j <= len(mm) - 1 and i - 1 - j >= 0: if mm[i + 1 + j] == mm[i - 1 - j]: if maxx < 2 * j + 3: maxx = 2 * j + 3 j += 1 else: break if mm[i] != mm[i + 1] and mm[i] != mm[i - 1]: j = 1 while i + j <= len(mm) - 1 and i - j >= 0: if mm[i + j] == mm[i - j]: if maxx < 2 * j + 1: maxx = 2 * j + 1 j += 1 else: break print(maxx) for i in sys.stdin: action(i.strip("\n"))
#字符串长度等于1的要单独出来,现在输入一个A报错,输入AA没有问题 str = input() n = len(str) list = [] for i in range(0,n-1): for j in range(1,n): if str[j] == str[i] and str[i+1:j] == str[j-1:i:-1]: list.append(len(str[i:j+1])) print(max(list)) # # ABBA ->4 # #ABBBA ->5 # #12HHHHA ->4
2、列表的连接
n = int(input()) mList = list(map(int, input().split())) xList = list(map(int, input().split())) lst = [] # print(mList) # print(xList) for i in range(n): lst+=[mList[i]]*xList[i] #这里没有想到要用列表的链接 # print(lst) #所有的法码 weights = {0} #这个重量的组合 for a in lst: for b in list(weights): weights.add(a+b) print(len(weights)) # print(weights)