发布于2019-09-11 13:58 阅读(721) 评论(0) 点赞(14) 收藏(4)
链接:https://www.nowcoder.com/questionTerminal/2a3dc06f337d4a2ba41d25c688f95e2f
来源:牛客网
av394281 中,充满威严的蕾米莉亚大小姐因为触犯某条禁忌,被隙间妖怪八云紫(紫m……èi)按住头在键盘上滚动。
同样在弹幕里乱刷梗被紫姐姐做成罪袋的你被指派找到大小姐脸滚键盘打出的一行字中的第 k
个仅出现一次的字。
(为简化问题,大小姐没有滚出 ascii 字符集以外的字)
输入描述:
每个输入都有若干行,每行的第一个数字为
k
,表示求第k
个仅出现一次的字。然后间隔一个半角空格,之后直到行尾的所有字符表示大小姐滚出的字符串S
。
输出描述:
输出的每一行对应输入的每一行的答案,如果无解,输出字符串
Myon~
(请不要输出多余的空行)
为了方便评测,如果答案存在且为c,请输出[c]
示例1
输入
2 misakamikotodaisuki
3 !bakabaka~ bakabaka~ 129!
3 3.1415926535897932384626433832795028841971693993751o582097494459211451488946419191919l91919hmmhmmahhhhhhhhhh
7 www.bilibili.com/av170001
1 111
输出
[d]
[9]
[l]
[7]
Myon~
备注:
字符串S仅包含可见ascii码,长度不超过100000
先求出每个字符出现的次数,存入一个有序的字典(按插入的顺序);接着遍历字典求出第k个唯一出现的字符。
import re
import sys
# 解决牛客网多行输入
rows = []
row = input()
while row != '':
rows.append(row)
row = sys.stdin.readline().strip()
import collections
# 将每次求解封装起来
def solve(n, text):
# 首先构造出按插入顺序排好的字符-次数字典对象
countDict = collections.OrderedDict()
# 用于记录第i个唯一出现字符
i = 0
# 遍历每一个字符
for char in text:
# 为字符添加相应次数
if not char in countDict.keys():
countDict[char] = 1
else:
countDict[char] += 1
# 遍历统计完的有序字典
for (k,v) in countDict.items():
# 遇到唯一出现的字符则i+1
if v == 1:
i += 1
# 如果i达到要求则可以结束
if i == n:
return k
# 遍历读入的每一行
for row in rows:
#利用正则获得数字以及之后的字符内容
r = re.match('(\d+) (.*)', row)
n = int(r.group(1))
text = r.group(2)
#求解并打印结果
res = solve(n, text)
if res == None:
print("Myon~")
else:
print("["+res+"]")
虽然很慢,但也算是通过了
作者:集天地之正气
链接:https://www.pythonheidong.com/blog/article/107203/43ab1698ea108f391444/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!