鱼C论坛

 找回密码
 立即注册
楼主: zltzlt

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

[复制链接]
 楼主| 发表于 2020-2-3 17:02:49 | 显示全部楼层

个空格!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 17:08:56 | 显示全部楼层
本帖最后由 一个账号 于 2020-2-3 17:11 编辑
  1. def fun(s, t):
  2.     s = list(s)
  3.     t = list(t)

  4.     for i in s[:]:
  5.         if i == "#":
  6.             temp = s.index(i) - 1
  7.             s.remove("#")
  8.             if temp >= 0:
  9.                 del s[temp]

  10.     for i in t[:]:
  11.         if i == "#":
  12.             temp = t.index(i) - 1
  13.             t.remove("#")
  14.             if temp >= 0:
  15.                 del t[temp]

  16.     return s == t
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-3 17:09:43 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 17:11:34 | 显示全部楼层

改了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-3 17:12:17 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 18:00:18 | 显示全部楼层
  1. def solve_322(s,t):
  2.     def solve_st(str1):
  3.         i = 0
  4.         while i<len(str1):
  5.             if str1[i] == '#' and i>0:
  6.                 str1 = str1[:i-1]+str1[i+1:]
  7.                 i-=1
  8.             elif i == 0 and str1[i] == '#':
  9.                 str1 = str1[1:]
  10.             else:
  11.                 i+=1
  12.         return str1
  13.     return solve_st(s)==solve_st(t)
  14. print(solve_322('ab##',"c#d#"))
复制代码

不走寻常路,可能会走偏
抱着可能会解答出错的心态来接受检测

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 18:14:54 | 显示全部楼层

你使用 time 模块计时的吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 18:38:33 | 显示全部楼层
本帖最后由 ll104567 于 2020-2-3 18:43 编辑

def get_x(s):
    x = []
    for i in s:
        if i == "#":
            if x:
                x.pop()
        else:
            x.append(i)
    return ''.join(x)

def judge(s,t):

    return get_x(s) == get_x(t)

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 19:45:36 | 显示全部楼层
wanting-for 发表于 2020-2-3 18:00
不走寻常路,可能会走偏
抱着可能会解答出错的心态来接受检测

我俩的想法好像接近
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 19:46:39 | 显示全部楼层
  1. def fun322(s,t):
  2.     text1,text2 = [],[]
  3.     if len(s) == 0 and len(t) == 0:
  4.         return True
  5.     for each in s:
  6.         if each == "#" and len(text1) > 0:
  7.             text1.pop()
  8.         else:
  9.             text1.append(each)
  10.     for each in t:
  11.         if each == "#" and len(text2) > 0:
  12.             text2.pop()
  13.         else:
  14.             text2.append(each)
  15.     return text1 == text2
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 20:14:18 | 显示全部楼层
“ ”
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-3 20:18:25 | 显示全部楼层
fan1993423 发表于 2020-2-3 19:45
我俩的想法好像接近

看来还不止我一个呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 21:23:19 | 显示全部楼层
import time
start=time.clock()
def function322(s,t):
    def f(r):
        y=''
        for i in r:
            if i=="#":
               y=y[:-1]
            else:
               y+=i
        return y
    return f(s)==f(t)
print(function322('ab##c','c#d#c'))
end=time.clock()
print('running time is {}ms'.format((end-start)*1000))

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 21:29:14 | 显示全部楼层
666
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-3 22:26:57 | 显示全部楼层
本帖最后由 TJBEST 于 2020-2-3 22:43 编辑

大家思想都差不多,我换个思路吧
  1. def fun322(str1,str2):

  2.     M1 = len(str1)
  3.     M2 = len(str2)
  4.    
  5.     str1 ='#' + str1
  6.     str2 = '#' + str2
  7.    
  8.     index1 = M1
  9.     index2 = M2
  10.    
  11.     cia1 = 0
  12.     cia2 = 0
  13.    
  14.     #字符串拓展 这样避免空字符串的情况没有下标
  15.     #操作前0 -1 正数
  16.     while True:
  17.         temp1 = str1[index1]
  18.         temp2 = str2[index2]
  19.         if cia1 > 0:
  20.             if temp1 == '#':
  21.                 cia1 += 1
  22.             else:
  23.                 cia1 -= 1
  24.         else:
  25.             if temp1 == '#':
  26.                 cia1 = 1
  27.             else:
  28.                 cia1 = -1
  29.         
  30.         if cia2 > 0:
  31.             if temp2 == '#':
  32.                 cia2 += 1
  33.             else:
  34.                 cia2 -= 1
  35.         else:
  36.             if temp2 == '#':
  37.                 cia2 = 1
  38.             else:
  39.                 cia2 = -1
  40.       
  41.         if cia1 == -1 and cia2 == -1:  
  42.             if temp1 == temp2:
  43.                 index1 -= 1
  44.                 index2 -= 1
  45.             else:
  46.                 return False
  47.         elif cia1==-1 and cia2 > -1:
  48.             if index2 > 0:
  49.                 index2 -= 1
  50.             else:
  51.                 return False
  52.         elif cia1 > -1 and cia2 == -1:
  53.             if index1 > 0:
  54.                 index1 -= 1
  55.             else:
  56.                 return False
  57.         else:
  58.             if index1 > 0 and index2 > 0:
  59.                 index1 -= 1
  60.                 index2 -= 1
  61.             elif index1 == 0 and index2 == 0:
  62.                 return True
  63.             elif index1 > 0:
  64.                 index1 -= 1
  65.             else:
  66.                 index2 -= 1
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 22:29:24 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-3 22:55:50 | 显示全部楼层
本帖最后由 hrp 于 2020-2-3 23:53 编辑

大同小异
  1. def func322(s, t):
  2.     def ch(s):
  3.         while "#" in s:
  4.             if (wz := s.index("#")) > 0:
  5.                 s = s[: wz - 1] + s[wz + 1 :]
  6.             else:
  7.                 s = s[1:]
  8.         return s

  9.     return ch(s) == ch(t)
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-4 11:35:45 | 显示全部楼层
  1. def fun322(s,t):
  2.     def func(x):
  3.         while '#' in x:
  4.             for i in range(len(x)):
  5.                 if x[i] == '#' and i == 0:
  6.                     x = x[1:]
  7.                     break
  8.                 elif x[i] == '#':
  9.                     x = x[:i-1] + x[i+1:]
  10.                     break
  11.         return x
  12.     if func(s) == func(t):
  13.         return True
  14.     return False
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-4 13:18:57 | 显示全部楼层

一天过去,没有评分。
幽怨.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-4 13:20:12 | 显示全部楼层
阴阳神万物主 发表于 2020-2-4 13:18
一天过去,没有评分。
幽怨.jpg

没有评分机会啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-13 18:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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