google code jam exercise——Alien Language
进入Qualification Round 2009的试题,第一道题Alien Language,模式匹配的问题,既然选择了Python,可以使用Regular Expression正则表达式,那就是太简单了。
主要问题就在于把给定的pattern转换为regular expression,把"("和")"换成"["和"]"就可以了,代码如下:
#!/usr/bin/python
#encoding:UTF-8
#Filename:AlienLanguage.py
import sys
import re
inname = "input.txt"
outname = "output.txt"
if len(sys.argv)>1:
inname = sys.argv[1]
outname = inname.rstrip(".in")
outname = outname + ".out"
fin = open(inname,"r")
fout = open(outname,"w")
caseNum = 0
line = fin.readline()
ndata = [int(val) for val in line.split()]
letterNum = ndata[0]
testCaseNum = ndata[1]
patternNum = ndata[2]
caseData = []
for i in range(testCaseNum):
line = fin.readline()
line = line.rstrip("\n")
caseData.append(line)
patternData = []
for i in range(patternNum):
line = fin.readline()
line = line.rstrip("\n")
line = line.replace("(","[")
line = line.replace(")","]")
patternData.append(line)
for pattern in patternData:
caseNum = caseNum + 1
cnt = 0
for line in caseData:
if re.match(pattern,line):
cnt = cnt + 1
answer = "Case #%d: %d\n" %(caseNum,cnt)
fout.write(answer)
fin.close()
fout.close()
结果测试正确。
只是在测试large case的时候运行时间稍微有点长。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述