pat

PAT 1077 Kuchiguse

时光总嘲笑我的痴心妄想 提交于 2020-01-11 05:51:20
《算法笔记》问题记录 PAT 1077 Kuchiguse (20分) 在问题A1077中,遇到测试点3(从0开始计算)错误,原因是PAT测试中不支持gets()函数的应用,在替换相同功能函数时字符串输入引起的问题。 初始代码 #include < cstdio > #include < cstring > void swap ( char str [ ] , int len ) { char temp ; for ( int i = 0 ; i < len / 2 ; i ++ ) { temp = str [ i ] ; str [ i ] = str [ len - 1 - i ] ; str [ len - 1 - i ] = temp ; } } int main ( ) { int n , minLen = 256 , ans = 0 ; scanf ( "%d" , & n ) ; getchar ( ) ; char str [ 100 ] [ 256 ] ; for ( int i = 0 ; i < n ; i ++ ) { gets ( str [ i ] ) ; int len = strlen ( str [ i ] ) ; if ( minLen > len ) minLen = len ; swap ( str [ i ] , len ) ; }

简单爬取腾讯新闻内容方法封装

做~自己de王妃 提交于 2020-01-10 11:24:50
import urllib.request import re def get_new_qq(url, pat, file): data = urllib.request.urlopen(url).read().decode("gbk", "ignore").strip() res = re.compile(pat).findall(data) with open(file, "w") as f: f.write(str(res)) return res if __name__ == '__main__': url = "https://www.qq.com/?pgv_ref=1" pat = "<li><a .*>(.*)</a></li>" file = "../腾讯新闻.txt" print(get_new_qq(url, pat, file)) 来源: https://www.cnblogs.com/CesareZhang/p/12175054.html

正则表达式匹配

女生的网名这么多〃 提交于 2020-01-08 05:40:27
题目描述 请实现一个函数用来匹配包括'.'和' '的正则表达式。模式中的字符'.'表示任意一个字符,而' '表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab ac a"匹配,但是与"aa.a"和"ab*a"均不匹配 代码 class Solution { public: bool match(char* str, char* pattern) { return match(str, 0, pattern, 0); } bool match(char* str, int s, char* pat, int p) { if (!str[s] && !pat[p]) {//匹配 return true; } if (!pat[p]) {//模式串结束不匹配 return false; } if (pat[p + 1]) { if (pat[p + 1] == '*') { bool f = false;; if (str[s] && (str[s] == pat[p] || pat[p] == '.')) { f = match(str, s + 1, pat, p + 2) //*匹配一次 || match(str, s + 1, pat, p); //*匹配多次 } return f ||

Python正则表达式函数

有些话、适合烂在心里 提交于 2020-01-06 22:02:40
正则表达式函数:正则表达式函数有:re.match()函数、re.search()函数、全局匹配函数、re.sub()函数 match():从头开始匹配 string = "Poythonpty" pat = "p.*?y" pat1 = "y.*" rst = re.match(pat, string, re.I) rst1 = re.match(pat1, string, re.I) print(rst) print(rst1) 打印结果:     search():任意地方匹配,从左到右提取一个结果 string = "Poythonpty" pat = "p.*?y" rst = re.search(pat, string, re.I) print(rst) 打印结果:     全局匹配函数:全局匹配格式:re.compile(正则表达式).findall(数据)    string = "PoythonptyohphyjkPdsy" pat = "p.*?y" rst = re.compile(pat, re.I).findall(string) print(rst)   打印结果:    常见实例   实例1:.com和.cn网址    string = "< a helf='https://www.baidu.com'>百度首页</a>" # pat = 'http.

re模块的使用

廉价感情. 提交于 2020-01-03 08:57:28
re模块下的函数 compile(pattern):创建模式对象 import re pat = re.compile('D') m = pat.search('CBA') #等价于re.search('A', 'ABC') n = pat.search('BCD') if m: print("####") if n: print("****") search(pattern,string):在字符串中寻找模式 m = re.search('asd','ASDasd') print(m) ##<_sre.SRE_Match object at 0xb72cd6e8> #匹配到了,返回MatchObject(True) n = re.search('asd','ASDASD') print(n) ## None #没有匹配到,返回None(False) match(pattern,string):在字符串开始处匹配模式 m = re.match('asd','asdasd') print(m) ## <_sre.SRE_Match object at 0xb72cd6e8> #匹配到了,返回MatchObject(True) n = re.match('asd','ASDASD') print(n) # 等价于 pat=re.compile('a') print(pat.match(

浙大PAT 1003 我要通过!

馋奶兔 提交于 2020-01-01 01:16:06
“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。 得到“答案正确”的条件是: 字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符; 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串; 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串。 现在就请你为 PAT 写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。 输入格式: 每个测试输入包含 1 个测试用例。第 1 行给出一个正整数 n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过 100,且不包含空格。 输出格式: 每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出 YES,否则输出 NO。 输入样例: 8 PAT PAAT AAPATAA AAPAATAAAA xPATx PT Whatever APAAATAA 输出样例: YES YES YES YES NO NO NO NO 首先分析一下题目: 1.只能有PTA三种字符,如果有别的字符则直接不通过。 2.形如xPATx,APATA

PAT乙级刷题之路1040 有几个PAT (25分)

拥有回忆 提交于 2019-12-31 09:50:00
1040 有几个PAT (25分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位§,第 4 位(A),第 6 位(T)。 现给定字符串,问一共可以形成多少个 PAT? 输入格式: 输入只有一行,包含一个字符串,长度不超过10^​5,只包含 P、A、T 三种字母。 输出格式: 在一行中输出给定字符串中包含多少个 PAT。由于结果可能比较大,只输出对 1000000007 取余数的结果。 输入样例: APPAPT 输出样例: 2 分析: 首先要根据题意分析出PAT的个数就是每个A前面P的个数乘以A后面T的个数的和,再去写代码。我们不能够找到每个A再去找它前面的P和后面的T相乘再相加,因为会超时。下面有一个巧法,一切尽在代码中。。。。。。细细品味 代码: # include <iostream> # include <string.h> using namespace std ; int main ( ) { char s [ 100001 ] ; long count = 0 , countt = 0 , countp = 0 ; scanf ( "%s" , & s ) ; for ( int i = 0 ; i < strlen ( s ) ; i ++ ) { if ( s [

PAT 乙级真题题解 java实现

妖精的绣舞 提交于 2019-12-28 18:44:01
虽然这次PAT考试的成绩并不算理想,但还是有了很多收获,特别是认识了一些很优秀的人以及他们平时怎么学习算法。 我参加的2019年冬季PAT乙级考试,这个时间PAT官网上的乙级真题有95道,我是使用java来做的(推荐使用c语言)。大部分题都是通过的,部分题目超出时间限制, 还有一部分只通过了部分用例。 以下是题目清单及我的通过情况: GitHub仓库 完全正确 1001 害死人不偿命的(3n+1)猜想 1002 写出这个数 1003 我要通过! 1004 成绩排名 1005 继续(3n+1)猜想 1006 换个格式输出整数 1007 素数对猜想 1008 数组元素循环右移问题 说反话 1010 一元多项式求导 1011 A+B 和 C 1012 数字分类 1013 数素数 1016 部分A+B 1017 A除以B 1019 数字黑洞 1020 月饼 1021 个位数统计 1022 D进制的A+B 1023 组个最小数 1024 科学计数法 1026 程序运行时间 1027 打印沙漏 1029 旧键盘 1036 跟奥巴马一起编程 1037 在霍格沃茨找零钱 1039 到底买不买 1040 有几个PAT 1041 考试座位号 1042 字符统计 1043 输出PATest 1044 火星数字 1046 划拳 1047 编程团体赛 1051 复数乘法 1053 住房空置率 1054

Python正则表达式函数

萝らか妹 提交于 2019-12-28 14:28:04
正则表达式函数:正则表达式函数有:re.match()函数、re.search()函数、全局匹配函数、re.sub()函数 match():从头开始匹配 string = "Poythonpty" pat = "p.*?y" pat1 = "y.*" rst = re . match ( pat , string , re . I ) rst1 = re . match ( pat1 , string , re . I ) print ( rst ) print ( rst1 ) 打印结果: search():任意地方匹配,从左到右提取一个结果 string = "Poythonpty" pat = "p.*?y" rst = re . search ( pat , string , re . I ) print ( rst ) 打印结果: 3、全局匹配函数:全局匹配格式:re.compile(正则表达式).findall(数据) string = "PoythonptyohphyjkPdsy" pat = "p.*?y" rst = re . compile ( pat , re . I ) . findall ( string ) print ( rst ) 打印结果: 常见实例 实例1:.com和.cn网址 string = "< a helf='https://www

学会Python正则表达式,就看这20个例子(整理自老表)

◇◆丶佛笑我妖孽 提交于 2019-12-26 07:53:06
1 查找第一个匹配串 import re s = 'i love python very much' pat = 'python' r = re.search(pat,s) print(r.span()) #(7,13) 2 查找所有1 s = '山东省潍坊市青州第1中学高三1班' pat = '1' r = re.finditer(pat,s) for i in r: print(i) # <re.Match object; span=(9, 10), match='1'> # <re.Match object; span=(14, 15), match='1'> 3 \d匹配数字[0-9] s = '一共20行代码运行时间13.59s' pat = r'\d+' # +表示匹配数字(\d表示数字的通用字符)1次或多次 r = re.findall(pat,s) print(r) # ['20', '13', '59'] 我们想保留13.59而不是分开,请看4 4 ?表示前一个字符匹配0或1次 s = '一共20行代码运行时间13.59s' pat = r'\d+\.?\d+' # ?表示匹配小数点(\.)0次或1次 r = re.findall(pat,s) print(r) # ['20', '13.59'] 5 ^匹配字符串的开头 s = 'This module