NAMELESSONE 发表于 2020-4-7 19:26:27

def solve(start,end):
    length = len(start)
    i = 0
    def judge(x1,x2,i):
      if start == x1 and end == x2:
            j = i
            while end != x1:
                j += 1
                if j == length:
                  return False
            if start == x2*(j - i-1):
                i = j+1
                return i
      return 0
    while i < length:
      if start == end:
            i+=1
            continue
      if i < len(start)-1 and start == end and start == end:
            i+=2
            continue
      res = judge('R','X',i) + judge('X','L',i)
      if res:
            i = res
            continue
      return False
    return True

zltzlt 发表于 2020-4-8 17:45:20

塔利班 发表于 2020-4-5 19:09
多点测试用例就好了

解答错误

输入:start = "XXXXXLXXXX", end = "LXXXXXXXXX"
输出:False
预期结果:True

zltzlt 发表于 2020-4-8 17:46:05

TJBEST 发表于 2020-4-5 19:58
来一个无脑的算法,后面有更好的在更改。

输入以下数据超时:

start = "XXXXXXRXXLXXRXXXRXXX", end = "RXXLXXXRXXXXXXRXXXXX"

zltzlt 发表于 2020-4-8 17:47:06

本帖最后由 zltzlt 于 2020-4-8 18:44 编辑

March2615 发表于 2020-4-5 21:35
后面判断位置写的太复杂了,不知道有没有更好的方法

48 ms

zltzlt 发表于 2020-4-8 18:31:18

kinkon 发表于 2020-4-5 21:37


56 ms

zltzlt 发表于 2020-4-8 18:35:02

ouyunfu 发表于 2020-4-5 22:38


解答错误

输入:start = "XXXXXLXXXLXXXX"
end = "XXLXXXXXXXXLXX"
输出:True
预期结果:False

zltzlt 发表于 2020-4-8 18:36:24

whosyourdaddy 发表于 2020-4-5 22:51
def func369(start,end):
    i = 0
    j = 0


52 ms

zltzlt 发表于 2020-4-8 18:37:31

ouyunfu 发表于 2020-4-5 23:25


解答错误

输入:start = "XXXXXLXXXLXXXX"
end = "XXLXXXXXXXXLXX"
输出:True
预期结果:False

zltzlt 发表于 2020-4-8 18:37:49

风魔孤行者 发表于 2020-4-6 10:00


解答错误

输入:start = "XXXXXLXXXLXXXX"
end = "XXLXXXXXXXXLXX"
输出:True
预期结果:False

zltzlt 发表于 2020-4-8 18:38:54

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

解答错误

输入:start = "XXXLXXLXXLXXRXXXRXLXRXRXXXXXLX"
end = "LLLXXXXXXXXXXXXXRRLXXXXXXXRRLX"
输出:False
预期结果:True

zltzlt 发表于 2020-4-8 18:40:09

chen971130 发表于 2020-4-6 12:14


解答错误

输入:start = "XXXXXLXXXX"
end = "LXXXXXXXXX"
输出:False
预期结果:True

zltzlt 发表于 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" 出错

zltzlt 发表于 2020-4-8 18:42:10

阴阳神万物主 发表于 2020-4-6 13:59
难度评级:简单
要素分析:字符串 模拟
代码:


60 ms

zltzlt 发表于 2020-4-8 18:43:15

NAMELESSONE 发表于 2020-4-7 19:26


解答错误

输入:start = "RL"
end = "LR"
输出:True
预期结果:False

旅途Z 发表于 2020-4-8 22:36:10

zltzlt 发表于 2020-4-8 18:38
解答错误

输入:


感谢楼主!错误已修正,给楼主赞一个&#128077;

fan1993423 发表于 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,end
            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,end_copy
            if start_copy.find('R')==-1:break
      else:break
    return True

zltzlt 发表于 2020-4-11 17:41:14

fan1993423 发表于 2020-4-11 11:08
这样也许快点,版主可以在测一下,速度可能有所提升, @zltzlt

结果有错

fan1993423 发表于 2020-4-11 20:23:05

不对啊,我是沿着他的思路写的
页: 1 [2]
查看完整版本: Python:每日一题 369