hihocoder 1039 解题报告(python)

1039_字符消除

题目链接: http://hihocoder.com/problemset/problem/1039

很久没刷题了赶紧刷点水题以免各种面试被bs

题目大意:

中文题目直接看题就懂

思路:

一时间也没有什么很好的感觉速度很快的思路,只好老老实实按照题目意思一步步的进行,还好能够AC.首先要考虑插入一个字母,位置可以是字符串中的任意一个位置,我也没多想这里直接用字符串拼接来完成。对于消除操作,写了一个函数来做这件事情,要消除所有连续出现的相同字母,直接用re的替换函数来实现,直到findall()函数返回空表示已经消除完成。

python代码:

# coding= utf-8
import sys
import re

if __name__ == "__main__":
    def eliminate_string(s):
        pat = re.compile(r"A{2,}|B{2,}|C{2,}")
        while pat.findall(s):
            s = re.sub(pat, "", s)
        return s

    numLines = int(sys.stdin.readline())
    for i in range(1, numLines + 1):
        line = sys.stdin.readline()
        oldLen = len(line)
        minLen = oldLen
        for insertIndex in range(0, oldLen - 1):
            for c in ("A", "B", "C"):
                newLine = line[:insertIndex] + c + line[insertIndex:]  # 插入一个字母后的字符串
                lineLeft = eliminate_string(newLine)
                if len(lineLeft) < minLen:
                    minLen = len(lineLeft)
                    minLine = lineLeft
        print oldLen - minLen + 1  # 算的是插入一个字母之后的消除长度

转载于:https://www.cnblogs.com/jolin123/p/4806801.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的四则运算答题系统Python代码示例: ```python import random def generate_question(): # 生成随机的两个数字和运算符 num1 = random.randint(1, 100) num2 = random.randint(1, 100) operator = random.choice(['+', '-', '*', '/']) # 生成题目字符串 question_str = f"{num1} {operator} {num2}" # 计算答案 if operator == '+': answer = num1 + num2 elif operator == '-': answer = num1 - num2 elif operator == '*': answer = num1 * num2 else: answer = num1 / num2 return question_str, answer def ask_question(question_str): # 输出题目字符串并获取用户输入的答案 user_answer = input(f"请计算这个数学问题:{question_str} = ") # 尝试将用户输入的答案转换为数字类型,如果失败则返回None try: user_answer = float(user_answer) except ValueError: user_answer = None return user_answer def main(): # 初始化计分器 score = 0 # 循环出题 while True: question_str, answer = generate_question() user_answer = ask_question(question_str) # 根据用户答案判断是否正确 if user_answer == answer: print("你的答案正确!") score += 1 else: print("你的答案错误!") print(f"正确答案是:{answer}") # 输出当前得分 print(f"你的得分是:{score}") # 询问是否继续答题 again = input("是否继续答题?(y/n)") if again.lower() != 'y': break print("游戏结束!") print(f"你最终的得分是:{score}") if __name__ == '__main__': main() ``` 运行该代码,系统会随机生成四则运算题目,要求用户计算出答案并输入。如果用户的答案正确,系统会输出“你的答案正确!”并加1分;否则,系统会输出“你的答案错误!”并输出正确答案,不加分。最终,系统会输出用户的得分。如果用户选择继续答题,系统会生成新的题目;否则,答题结束,系统输出最终得分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值