B站 2021算法A卷 24题变形词 python解法

24.变形词
对于两个字符串A和B,如果A和B中出现的字符种类相同且每种字符出现的次数相同,则A和B互为变形词,请设计一个高效算法,检查两给定串是否互为变形词。
给定两个字符串A和B,请返回一个bool值,代表他们是否互为变形词。
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M

输入描述:
两行,每行各一个字符串s,s长度小于1000

输出描述:
bool 值

示例1
输入例子:
    bcbc
    cbcb
输出例子:
    1

讨论:

1. 改变了部分"初始给定代码" (调整了输入读取方式,注释掉了看不懂的代码),不然真的写不出来。感觉"初始给定代码"中存在着一定误导。

2. 很久没有见过在考试中给try-except当结构,leetcode上做题一般都是给子函数def的结构。完成功能就好。研究了很久如何在这个结构中完成功能,最后还是选择调取def。

3. 吐槽:牛客的报错太糟糕了!!!很多次本地编译器跑成功,线上OJ无输出还没有任何提示!真的很浪费时间!求提升!!!

代码:

import sys

def myfunction(line1, line2):
    if len(line1) != len(line2):
        return 0
    for i in line1:
        num = line1.count(i)
        if line2.find(i) >= 0:
            if line2.count(i) != num:
                return 0
        else:
            return 0
    return 1

try:
    while True:
        line1 = sys.stdin.readline().strip()
        line2 = sys.stdin.readline().strip()
        a = myfunction(line1, line2)
        print(a)
        # print(int(lines[0])+int(lines[1]))
        break
except:
    print(-1)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值