![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PAT甲级 字符串
PAT中遇到的字符串处理问题
爱吃梦龙雪糕
这个作者很懒,什么都没留下…
展开
-
1140 Look-and-say Sequence (20 分)
字符串处理问题,写一个函数即可 坑点如下 1,注意理解题目 2,巧用string的加法 ans+=s[i-1]+to_string(num); 整体代码如下 #include<iostream> using namespace std; string look(string s){ string ans; int num=1; int i; for( i=1;i<s.size();i++){ if(s[i]==s[i-1])num++; el原创 2021-08-29 19:31:57 · 37 阅读 · 0 评论 -
1136 A Delayed Palindrome (20 分)
字符串处理问题,本题考察的知识点有,回文字符的判断,大数的计算方法。 坑点如下 1,要单独判断给出的数是否是回文字符 2,reverse函数的用法 reverse(t.begin(),t.end()); 3,大数的计算方法 string Add(string a,string b){ int sp=0,num=0,cnt=0; string s; for(int i=a.size()-1;i>=0;i--){ num=a[i]-'0'+b[i]-'0'+cn原创 2021-08-27 15:58:34 · 40 阅读 · 0 评论 -
PAT甲级-1100 Mars Numbers (20分)
1100 Mars Numbers (20分) 题目描述如下 题目分析 在火星上用的是十三进制在地球上用的是10进制,题目要求写一个两者之间转换的程序. 本题数据量较少,故采用直接打表方式完成。 注意要点 1,getline函数的使用---get(cin ,string a) 2,不同的映射要分辨清楚 3,getline(cin,str)会吸收上一个cin多余的回车符,要在使用前用getchar()吸收一下,或者采用scanf("%d%*",a)方式忽略掉后面一个多余的符号。 代码如下 cpp #原创 2021-04-29 12:39:23 · 88 阅读 · 0 评论 -
1073 Scientific Notation (20 分)
简单的字符串处理问题,但太久没做一时忘记怎么处理; 坑点如下; 1,指数为负数时情况简单,但指数为正时要注意是否含有小数点,如有要计算好小数点的位置 2,字符串处理时要尽量简便化,我一开始设了一大堆未知量,但后来发现可以直接在数组中处理。 3,长度不超过9999字节,说明char数组大小要开到9999以上。 代码如下; #include<cstdio> #include<cstring> #include<algorithm> #include<cmath>原创 2021-07-25 10:17:03 · 49 阅读 · 0 评论 -
1082 Read Number in Chinese (25 分)
字符串处理问题,对我来说很难的一道题,做了两遍看答案才做出来,坑点如下 1,用left和right将数据分块处理,一个单元一个单元的依次处理; 2,ling的情况,使用flag记录是否存在多余的零 3,如果一个单元没有输出一个字符,则不必输入后边的位,如(800000008)省略万位。 代码如下 #include<algorithm> #include<cstring> using namespace std; char a[12]; char b[12]; char c[10][5原创 2021-07-26 11:11:42 · 37 阅读 · 0 评论 -
1038 Recover the Smallest Number (30 分)
贪心问题 坑点如下 1,注意string的灵活运用 bool cmp(string a,string b) { return a+b<b+a;} string str[maxn]; 2,两个字符串组成的数字取最小值的方法,注意证明步骤 代码如下 bool cmp(string a,string b) { return a+b<b+a;} 3,开始用cout>>0有一个显示超时,换成printf后成功通过 整体代码如下 #include<cstdio>原创 2021-07-29 15:26:53 · 29 阅读 · 0 评论 -
1108 Finding Average (20 分)
本题用以下两个函数十分容易解决。 sscanf() – 从一个字符串中读进与指定格式相符的数据 sprintf() – 字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。 sscanf() 的用法 sscanf(a,"%lf",&temp); printf("%lf\n",temp); 输入 输出 2,sprintf的用法 sprintf(b,"%.2f",temp); printf("%s\n",b); 整体代码如下 #include<cstdio原创 2021-08-18 10:14:41 · 51 阅读 · 0 评论 -
1112 Stucked Keyboard (20 分)
字符串处理问题,参考了柳婼的代码。 柳神代码链接 坑点如下 1,本题在字符串末尾再添加一个字符,否则当最后几个字符相等时存在判断问题。(当不相等时才能做出判断) 2,我的方法,将可能存在问题的字符放入set容器,开nobroken数组存放一定没坏的键。最后判断时将set中有而nobroken中没有的输出即可 整体代码如下 #include<bits/stdc++.h> using namespace std; bool nobroken[256]; int main(){ int k;原创 2021-08-19 10:47:48 · 65 阅读 · 0 评论 -
1132 Cut Integer (20 分)
很简单的一道题,考察的知识点有,string容器的使用,stoi函数的使用 坑点如下 1,一个数能整除两个数的乘积,则这个数可以分别整除两个数 2,注意零不能做分母,否则会出现浮点错误。 3,string中的函数,获取字符串的子串,参数分别是初始位置和长度。 pre=temp.substr(0,num/2); 整体代码如下 #include<cstdio> #include<cstring> #include<iostream> using namespace std;原创 2021-08-25 16:22:48 · 36 阅读 · 0 评论