字符串专题
《算法笔记》字符串专题
yc_cy1999
一只喜欢cc和想去南大的小羊
展开
-
⭐⭐⭐⭐⭐PAT A1082 Read Number in Chinese
文章目录题目描述知识点实现码前思考代码实现码后反思题目描述题目大意:给定一个不超过9位的整数,你应该用传统的中文方式阅读它~ 如果是负的,首先输出“Fu”。 例如,-123456789被读作“Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu”。 注意:零(“ling”)必须根据中国传统正确处理。 例如,100800是“yi Shi Wan ling ba Bai”~知识点模拟题实现码前思考需要分为3个部分进.原创 2020-05-25 22:08:10 · 100 阅读 · 0 评论 -
【字符串函数】PAT A1077 Kuchiguse (20分)
文章目录题目描述知识点我的实现码前思考代码实现码后反思题目描述找所有字符串的共同后缀知识点STL字符串string的使用我的实现码前思考就一直比对就好代码实现#include <iostream>#include <string>using namespace std;const int maxn = 1e2+10;string ins[maxn];int n;int main(){ scanf("%d\n",&n); int len.原创 2020-08-10 16:19:49 · 98 阅读 · 0 评论 -
⭐【思维+划分情况】PAT A1073 Scientific Notation
文章目录题目描述实现码前思考代码实现码后反思题目描述题目给出科学计数法的格式的数字A,要求输出普通数字表示法的A,并保证所有有效位都被保留,包括末尾的0。实现码前思考这道题目我用了很长的时间,这里主要还是分情况解析问题为主,将情形拆分为exp是大于0,小于0,还是等于0;代码实现#include <cstdio>#include <iostream>#include <string>using namespace std;string in.原创 2020-05-30 19:30:06 · 103 阅读 · 0 评论 -
⭐PAT A1061 Dating
文章目录题目描述知识点实现码前思考代码实现码后反思题目描述福尔摩斯接到一张奇怪的字条:“我们约会吧!3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了,前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母D,代表星期四;第2对相同的字符是E,那是第5个英文字母,代表一天里的第14个钟头(于是一天的0点到23点由数字0到9、以及大写字母A到N表示);后面两字符串第1对相同的英文字母s出现在第4个.原创 2020-06-02 18:46:26 · 165 阅读 · 0 评论 -
【字符串水题】PAT A1035 Password (20分)
文章目录题目描述知识点我的实现码前思考代码实现码后反思题目描述知识点字符串处理我的实现码前思考水题代码实现#include <iostream>#include <string>#include <algorithm>#include <vector>#include <unordered_map>using namespace std;struct node{ string account; string .原创 2020-08-09 21:38:24 · 92 阅读 · 0 评论 -
【string函数使用】PAT A1005 Spell It Right (20分)
文章目录题目描述知识点码前思考代码实现码后反思题目描述知识点string码前思考string水题代码实现#include <iostream>#include <algorithm>#include <string>#include <map>using namespace std;int main(){ int sum=0; string input; map<int,string> mp={{0,"ze.原创 2020-08-09 21:16:33 · 94 阅读 · 0 评论 -
【string函数使用】PAT A1001 A+B Format (20分)
文章目录题目描述实现码前思考代码实现码后反思题目描述实现码前思考需要使用STL里的string,然后需要将数字转换成字符串,需要用to_string(),这次终于没忘记了,插入逗号要用insert(),还有获取子串substr();代码实现#include <iostream>#include <string>using namespace std;int a,b,c;int main(){ scanf("%d %d",&a,&b);.原创 2020-08-09 21:00:38 · 82 阅读 · 0 评论 -
LeetCode 49. Group Anagrams【排序+集合+哈希+字符串】
文章目录题目描述知识点结果实现码前思考代码实现码后反思题目描述知识点哈希+字符串结果实现码前思考一个典型的集合问题,拥有相同字符的字符串放到一个集合里面;**怎么来判断拥有相同字符呢?**可以对每个字符串按照字典序进行排序,一排序就可以区分了。这道题我解题的突破口就是这个排序吧。代码实现//先将每个单词字典序排序//以排序后的单词生成map<string,int>class Solution {public: vector<vector<.原创 2020-07-22 16:41:59 · 85 阅读 · 0 评论 -
LeetCode 139. Word Break【KMP+动态规划】⭐⭐⭐⭐⭐
文章目录题目描述知识点结果实现码前思考代码实现码后反思题目描述给定一个单词和一个词典,看这个单词能不能由词典里面的单词构成。知识点动态规划?我用的是 KMP+dp数组 的方式结果实现码前思考确实没有想到怎么用纯动规来解答这个题目。。。所以就动起了KMP的歪脑筋首先,需要明确的是,如果能够被拆分,那么肯定是由s中匹配的word构成的,所以,我们不妨先找出s中所有匹配的word,然后记录这些word在s的起点和终点;得到s中所有的匹配的word的起点和终点之后,将他们按照起点进行从小.原创 2020-06-21 16:17:11 · 180 阅读 · 2 评论 -
POJ 1961 Period
文章目录题目链接知识点实现码前思考代码实现码后反思题目链接Period知识点KMP算法,最小循环节问题实现码前思考典型地利用KMP算法中的nex数组求解循环节的问题,之前做过一道相似的题目;对于求循环节的问题,主要就是在原始的getNex操作之后加入一些操作就好,实质还是利用nex数组,可见其重要性;理解nex[i]的含义,其含义是子串s[0...i]的最长匹配前缀;这道题目不允许输出K==1的情况,因此需要在循环节的基础代码上,再增加一些限制;5.循环节的思路:① 得到理想中.原创 2020-05-12 12:46:30 · 99 阅读 · 0 评论 -
Simpsons’ Hidden Talents
文章目录题目描述知识点实现码前思考代码实现码后反思题目描述知识点KMP实现码前思考这道题就是进行字符串匹配问题。但是需要特别注意需要防止在text中找到pattern匹配的情况代码实现//此题应该就是字符串的匹配问题#include <cstdio>#include <cstring>const int maxn = 5e4+10;int nex[maxn];char text[maxn];char pattern[maxn];void g.原创 2020-05-12 11:09:49 · 171 阅读 · 0 评论 -
⭐⭐⭐⭐⭐Seek the Name, Seek the Fame
文章目录题目描述知识点实现码前思考代码实现码后反思题目描述知识点KMP算法nex数组的理解实现码前思考这道题目主要考察的是对于nex数组的理解,可以将这道题目看作是对i = len-1与j =len-2的字符串匹配过程。唯一不同是这里不论是s[i] == s[j+1]还是s[i] != s[j+1]都要进行回退,直到不能再回退为止。代码实现#include <cstdio>#include <cstring>#include <algorithm&.原创 2020-05-12 10:17:50 · 111 阅读 · 0 评论 -
⭐⭐⭐⭐⭐【KMP & 最小循环节】Power Strings
文章目录题目描述知识点实现码前思考代码实现码后反思题目描述知识点KMP算法以及最小循环节定理实现码前思考KMP算法分为两个部分:① 获取next数组;② 进行匹配最小循环节定理:① 得到理想中的最小循环节长度mod = (len-1) - next[len-1],例如对于ababa的理想mod = 4 - 2 = 2;② 使用len%mod进行判断,如果len%mod==0,那么最小循环节长度就是mod,否则最小循环节长度就是len了。输出结果就OK。代码实现#inclu.原创 2020-05-12 09:34:10 · 145 阅读 · 0 评论 -
字符数组使用
文章目录1. strcmp()1. strcmp()C 库函数 int strcmp(const char *str1, const char *str2)把 str1 所指向的字符串和 str2 所指向的字符串进行比较。注意是第一个比第二个!参数str1 – 要进行比较的第一个字符串。str2 – 要进行比较的第二个字符串。返回值如果返回值小于 0,则表示 str1 ...原创 2020-04-28 20:09:27 · 240 阅读 · 0 评论 -
⭐PAT A1108 Finding Average
文章目录题目描述知识点实现码前思考代码实现码后反思题目描述知识点字符串处理题实现码前思考我的思想 很暴力 ,就是每次读一个字符串,然后遍历这个字符串来判断是否合法。从非负号开始读起;记录小数点出现的次数,一旦出现两个小数点,返回false;记录小数点前面的值和小数点后面的值的大小;检查当前字符是不是数字和小数点,不是则返回false;小数点前后相加,如果超过范围,返回...原创 2020-04-28 19:09:20 · 109 阅读 · 0 评论 -
LeetCode 32. Longest Valid Parentheses【动态规划+栈+括号匹配】⭐⭐⭐⭐⭐
文章目录题目描述知识点结果实现码前思考代码实现码后反思参考文档题目描述知识点栈、字符串匹配结果实现码前思考看见子串匹配问题,我想到的是滑动窗口,但是很遗憾,我没有找到解决办法;再然后看见最长,我想的是动态规划,毕竟是最优化问题嘛,但是也没有想清楚;最后,我偷偷看了一下提示,才发现栈,原来之前也是做过括号匹配的题目的,用的就是栈,于是我就想怎么用栈来解决这个问题。思路是...原创 2020-04-25 15:03:21 · 127 阅读 · 0 评论 -
LeetCode 20. Valid Parentheses【栈+括号匹配】
文章目录题目描述知识点结果实现码前思考代码实现码后反思参考文档题目描述知识点字符串、栈结果实现码前思考是我们在刚刚入门栈这种数据结构时都会讲的表达式求值问题的低级版,话说我现在好像还不会表达式求值????后面一定要补上!代码实现//类似于表达式求值//只不过这个表达式求值会更加地简单一些class Solution {public: bool isValid(...原创 2020-04-24 14:45:36 · 105 阅读 · 0 评论 -
字符串匹配掌握了吗?
文章目录题目描述知识点实现码前思考代码实现码后反思题目描述知识点字符串匹配,也就是KMP算法!实现码前思考这道题的出题人给予我们宽容,所以暴力也是可以解的;这道题目的标准解法应该是KMP,即时间复杂度为O(N)O(N)O(N),空间复杂度为O(M)O(M)O(M)。代码实现#include "bits/stdc++.h"using namespace std;//设...原创 2020-04-11 21:44:43 · 76 阅读 · 0 评论 -
⭐动态规划之KMP字符匹配算法
文章目录1. KMP算法概述2. 状态机概述3. 构建状态转移图4. 代码实现5. 最后总结KMP 算法(Knuth-Morris-Pratt 算法) 是一个著名的字符串匹配算法,效率很高,但是确实有点复杂。很多读者抱怨 KMP 算法无法理解,这很正常,想到大学教材上关于 KMP 算法的讲解,也不知道有多少未来的 Knuth、Morris、Pratt 被提前劝退了。有一些优秀的同学通过手推...转载 2020-04-11 21:23:14 · 310 阅读 · 0 评论 -
codeup 3708
目录疑问代码反思疑问暂无代码#include<cstdio>#include<cstring>const int maxn = 1010;char pattern[maxn];char text[maxn];int nextVal[maxn];void getNextVal(char s[],int len){ int j = -1; next...原创 2020-02-10 21:06:10 · 85 阅读 · 0 评论 -
codeup 2987
目录疑问代码反思疑问题目中说text的长度在10,000,000以内,这有点大,那么肯定不能使用字符数组一次性读完一行的text,我不知道string类型可不可以做到,我看别人的代码使用string类型是过了题的。代码#include<stdio.h>#include<string.h>#include<math.h>const int ...原创 2020-02-10 20:12:08 · 1973 阅读 · 0 评论 -
codeup 2790
目录疑问代码反思疑问暂无代码#include<cstdio>#include<iostream>#include<string.h>using namespace std;const int maxn = 260;int n;char pattern[maxn];char text[maxn];//首先是求解npattern的...原创 2020-02-10 18:13:05 · 112 阅读 · 0 评论 -
【知识点2】KMP算法⭐⭐⭐⭐⭐
目录字符串匹配问题定义暴力解决方案KMPnext数组定义示例求解next数组字符串匹配问题本节主要讨论字符串的匹配问题。定义如果给出两个字符串text和pattern,需要判断字符串pattern是否是字符串text的子串。一般把字符串text称为文本串,而把字符串pattern称为模式串。暴力解决方案KMP下面介绍KMP算法,时间复杂度为 O(n+m)O(n+m)O(n+m)。它...原创 2020-02-10 15:41:39 · 194 阅读 · 0 评论 -
【知识点1】字符串hash进阶⭐⭐⭐⭐⭐
目录知识回顾知识回顾字符串hash是将一个字符串S映射为一个整数,使得该整数可以尽可能唯一地代表字符串S。那么在一定程度上,如果两个字符串转换成的整数相等,就可以认为这两个字符串相同。...原创 2020-02-06 18:23:14 · 207 阅读 · 0 评论