JoeJoy 发表于 2021-9-15 20:04:40

计算字符串

本帖最后由 JoeJoy 于 2021-9-15 20:05 编辑

问题: 输入一段字符串,形式为 数字*。例如:2*], 得出结果acccaccc.
注:测试用例很多,格式几乎都是 数字*.

suchocolate 发表于 2021-9-15 22:11:00

原题发出来,你贴的题目格式乱。
另外你的代码发出来。

JoeJoy 发表于 2021-9-16 17:59:35

suchocolate 发表于 2021-9-15 22:11
原题发出来,你贴的题目格式乱。
另外你的代码发出来。

原题已经过去了ㅠㅠ,我这算是记忆下来了,这道题我理解的就是2*], 经过计算得到acccaccc。 这个例子就是原题的例子,整个字符串都一样。

qq1151985918 发表于 2021-9-17 09:08:04

本帖最后由 qq1151985918 于 2021-9-17 09:16 编辑

参考代码:
import re


def get_str(s):
    # 以下非案例 "2*]" 必须条件
    # 因题目不清,是为防其他条件因素自己想象添加
    # --------------------------------------
    s = s.replace(" ", "").replace("]", "]+")
    while "++" in s or "]+]" in s or "+" == s[-1]:
      s = s.replace("++", "+").replace("]+]", "]]")
      s = s[:-1] if "+" == s[-1] else s
    # --------------------------------------
   
    r1 = re.findall(r"+\d+\*{1}", s)
    r2 = re.findall(r"(+)\d+\*{1}", s)
   
    r3 = re.findall(r"\[+\]", s)
    r4 = re.findall(r"\[(+)\]", s)
   
    for x, y in zip(r1, r2):
      z = x.replace(y, "'" + y + "'+")
      s = s.replace(x, z)
      
    for x, y in zip(r3, r4):
      z = x.replace(y, "'" + y + "'")
      s = s.replace(x, z)
      
    s = s.replace("[","(").replace("]",")")
    return eval(s)


if __name__ == "__main__":
    string = "2*]"
    print(get_str(string))

冬雪雪冬 发表于 2021-9-18 11:24:07

import re
s = '2*]'
while '[' in s:
    d =re.findall('\d+\*\[+\]', s)
    for each in d:
       n1 = re.findall('\d+', each)
       s1 = re.findall('+', each)
       s = s.replace(each, int(n1)*s1)
print(s)
页: [1]
查看完整版本: 计算字符串