牛客刷题|HJ27 查找兄弟单词,HJ32 密码截取

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)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值