鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: zltzlt

[已解决]Python:每日一题 369

[复制链接]
发表于 2020-4-7 19:26:27 | 显示全部楼层
def solve(start,end):
    length = len(start)
    i = 0
    def judge(x1,x2,i):
        if start[i] == x1 and end[i] == x2:
            j = i
            while end[j] != x1:
                j += 1
                if j == length:
                    return False
            if start[i+1:j] == x2*(j - i-1):
                i = j+1
                return i
        return 0
    while i < length:
        if start[i] == end[i]:
            i+=1
            continue
        if i < len(start)-1 and start[i+1] == end[i] and start[i] == end[i+1]:
            i+=2
            continue
        res = judge('R','X',i) + judge('X','L',i)
        if res:
            i = res
            continue
        return False
    return True

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
zltzlt + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-8 17:45:20 | 显示全部楼层
塔利班 发表于 2020-4-5 19:09
多点测试用例就好了

解答错误

输入:
start = "XXXXXLXXXX", end = "LXXXXXXXXX"
输出:False
预期结果:True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-8 17:46:05 | 显示全部楼层
TJBEST 发表于 2020-4-5 19:58
来一个无脑的算法,后面有更好的在更改。

输入以下数据超时:
start = "XXXXXXRXXLXXRXXXRXXX", end = "RXXLXXXRXXXXXXRXXXXX"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-8 17:47:06 | 显示全部楼层
本帖最后由 zltzlt 于 2020-4-8 18:44 编辑
March2615 发表于 2020-4-5 21:35
后面判断位置写的太复杂了,不知道有没有更好的方法


48 ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-8 18:31:18 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-8 18:35:02 | 显示全部楼层

解答错误

输入:
start = "XXXXXLXXXLXXXX"
end = "XXLXXXXXXXXLXX"
输出:True
预期结果:False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-8 18:36:24 | 显示全部楼层
whosyourdaddy 发表于 2020-4-5 22:51
def func369(start,end):
    i = 0
    j = 0

52 ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-8 18:37:31 | 显示全部楼层

解答错误

输入:
start = "XXXXXLXXXLXXXX"
end = "XXLXXXXXXXXLXX"
输出:True
预期结果:False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-8 18:37:49 | 显示全部楼层

解答错误

输入:
start = "XXXXXLXXXLXXXX"
end = "XXLXXXXXXXXLXX"
输出:True
预期结果:False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-8 18:38:54 | 显示全部楼层
旅途Z 发表于 2020-4-6 11:51
思路:先检查长度及去X后LR的顺序与数量是否一致,
再根据LR在start与end字符串中的索引判断是否可以 ...

解答错误

输入:
start = "XXXLXXLXXLXXRXXXRXLXRXRXXXXXLX"
end = "LLLXXXXXXXXXXXXXRRLXXXXXXXRRLX"
输出:False
预期结果:True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-8 18:40:09 | 显示全部楼层

解答错误

输入:
start = "XXXXXLXXXX"
end = "LXXXXXXXXX"
输出:False
预期结果:True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-8 18:40:57 | 显示全部楼层
Joy187 发表于 2020-4-6 12:50
def converse(start,end):
    for i in range(0,len(start)):
        if(start=='X'):

输入 start = "X", end = "L" 出错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-8 18:42:10 | 显示全部楼层
阴阳神万物主 发表于 2020-4-6 13:59
难度评级:简单
要素分析:字符串 模拟
代码:

60 ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-8 18:43:15 | 显示全部楼层

解答错误

输入:
start = "RL"
end = "LR"
输出:True
预期结果:False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-8 22:36:10 | 显示全部楼层
zltzlt 发表于 2020-4-8 18:38
解答错误

输入:

感谢楼主!错误已修正,给楼主赞一个&#128077;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-11 11:08:20 | 显示全部楼层
本帖最后由 fan1993423 于 2020-4-11 11:09 编辑
March2615 发表于 2020-4-5 21:35
后面判断位置写的太复杂了,不知道有没有更好的方法


这样也许快点,版主可以在测一下,速度可能有所提升, @zltzlt
def daily369(start: str, end: str) -> bool:
    start_copy,end_copy=start[:],end[:]
    if len(start) != len(end):return False
    if start.replace('X', '') != end.replace('X', ''):return False
    while True:
        start_l,end_l=start.find('L'),end.find('L')
        if start_l!=-1:
            if start_l<end_l:return False
            if start_l==len(start)-1 or end_l==len(end)-1:break
            start,end=start[start_l+1:],end[end_l+1:]
            if start.find('L')==-1:break
        else:break
    while True:
        start_r,end_r=start_copy.find('R'),end_copy.find('R')
        if start_r!=-1:
            if start_r>end_r:return False
            if start_r==len(start_copy)-1 or end_r==len(end_copy)-1:break
            start_copy,end_copy=start_copy[start_r+1:],end_copy[end_r+1:]
            if start_copy.find('R')==-1:break
        else:break
    return True

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
zltzlt + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-11 17:41:14 | 显示全部楼层
fan1993423 发表于 2020-4-11 11:08
这样也许快点,版主可以在测一下,速度可能有所提升, @zltzlt

结果有错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-11 20:23:05 | 显示全部楼层
不对啊,我是沿着他的思路写的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 11:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表