HJ27 查找兄弟单词
思路:对字典中的每一个单词,如果它不等于x且与x的长度相同,查找它每个字母是否在x中,如果存在,则删除x中对应的字母,若最后x为空,则说明此单词为x的兄弟单词。注意每次比较一个新的单词, 需要copy一个完整的x。
代码
import sys
line = sys.stdin.readline().strip()
line = line.split()
n= line[0]
dic = line[1:-1]
x = line[-2]
k = int(line[-1])
ans = []
for word in dic:
if word != x and len(word) == len(x):
x1 = x
for letter in word:
if letter in x1:
idx = x1.index(letter)
x1 = x1[:idx] + x1[idx+1:]
if x1 == '':
ans.append(word)
ans = sorted(ans)
print(len(ans))
if len(ans) >= k:
print(ans[k-1])
HJ32 密码截取
思路:循环字符串中每一个字符,由它为中心向左右扩展(寻找aba对称型字符),或由它和它后一个字符为中心,向左右扩展(寻找abba对称型字符),直到左边不等于右边为止。选取长度最大的数。
代码
import sys
s = sys.stdin.readline().strip()
ans = 0
for i in range(len(s)):
k = i-1
j = i+1
aba = 1
while k>= 0 and j <len(s):
if s[k] == s[j]:
k -= 1
j += 1
aba += 2
else:
break
k = i
j = i+1
abba = 0
while k >= 0 and j < len(s):
if s[k] == s[j]:
k -= 1
j += 1
abba += 2
else:
break
max_len = max(aba, abba)
ans = max(ans, max_len)
print(ans)