计算字符串
本帖最后由 JoeJoy 于 2021-9-15 20:05 编辑问题: 输入一段字符串,形式为 数字*。例如:2*], 得出结果acccaccc.
注:测试用例很多,格式几乎都是 数字*. 原题发出来,你贴的题目格式乱。
另外你的代码发出来。 suchocolate 发表于 2021-9-15 22:11
原题发出来,你贴的题目格式乱。
另外你的代码发出来。
原题已经过去了ㅠㅠ,我这算是记忆下来了,这道题我理解的就是2*], 经过计算得到acccaccc。 这个例子就是原题的例子,整个字符串都一样。 本帖最后由 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))
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]