字符串
文章平均质量分 71
程序设计竞赛中字符串相关知识
小飞猪Jay
远风知我意,微凉又深情。
展开
-
5.最长回文子串
OK , 处理完长度为2的之后,j 开始从 3 到 l(字符串长度) 开始遍历,当长度为 j 的时候,i 从0 也就是第一个字符开始枚举,那如何判断 i 为初始字符且长度为 j 的字符串是不是回文串呢?你能想到最笨的方法是什么?从字符串的长度开始向长度为 1 开始枚举,然后判断此长度下的所有可能的字符串是否满足回文串。从小到大就不一样了,如果这个小的子串是回文串,那么如果他两端的字母是一样的,那加上两端的大的字符串也是回文串。本题中的最大长度仅仅是1000,那按照上面的做法,时间复杂度是10的八次幂。原创 2023-03-23 23:27:24 · 98 阅读 · 0 评论 -
C. ABBB
题目:Zookeeper is playing a game. In this game, Zookeeper must use bombs to bomb a string that consists of letters ‘A’ and ‘B’. He can use bombs to bomb a substring which is either “AB” or “BB”. When he bombs such a substring, the substring gets deleted fro原创 2020-10-18 15:54:52 · 600 阅读 · 0 评论 -
最长回文子串 (Manacher算法)
代码:#include <cstdio>#include <cstring>#include <stack>#include <queue>#include <map>#include <set>#include <vector>#include <cmath>#include <algorithm>#include<bits/stdc++.h>using names原创 2020-09-15 15:47:18 · 64 阅读 · 0 评论 -
最长回文子串 最长回文子序列
1.最长回文子序列(可以不连续)#include<iostream> #include<string> #include<algorithm> #include<bits/stdc++.h>using namespace std; //递归方法,求解最长回文子序列 int lps(char *str, int i, int j) { if (i == j) return 1; //只转载 2020-08-09 17:32:08 · 229 阅读 · 0 评论 -
最长公共子序列(LCS)
1.求LCS长度输入:abcfbc abfcabprogramming contestabcd mnp输出:420#include <cmath>#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm> using namespace std; char a[1001],原创 2020-08-09 16:20:27 · 106 阅读 · 0 评论 -
EditDis(编辑距离模板)
int dp[1005][1005]; /*dp[i][j]表示表示A串从第0个字符开始到第i个字符和B串从第0个字符开始到第j个字符,这两个字串的编辑距离。字符串的下标从1开始。*/char a[1005],b[1005]; //a,b字符串从下标1开始 int EditDis(){ int len1 = strlen(a+1); int len2 = strlen(b+1); //初始化 for(int i=1;i<=len1;i++)原创 2020-08-07 14:49:43 · 345 阅读 · 0 评论 -
codeforce. B. String Modification
题意:有n个测试数据。每个测试数据第一个数t,表示字符串的长度。接下来输入字符串。你可以指定一个长度,然后从第一个字符开始反转该长度的字符串,直到最后一个字符反转完毕。问指定的长度为多少时,可以得到字典序最小的字符串。输出字典序最小的字符串以及指定的长度的大小。思路:因为数据给的很小,所以我们直接模拟的做就行了。代码:#include<bits/stdc++.h>...原创 2020-03-05 13:19:21 · 171 阅读 · 0 评论 -
codeforce B. Good String
题意:这道题其实不难,就是题意容易理解跑偏了。给你一串字符串,你可以选择一个字符“<",删除它左边的字符;你也可以选择字符“>"删去它右边的字符。现在想得到字符串都是由一样的字符组成,***但问的是***在进行上述操作之前他要删去至少多少个字符才能满足题意。思路:正确理解了题意,那就很简单了。在第一个>左边的字符你都无法改变,最后一个<右边的字符你也无法改变。所以只要...原创 2020-03-03 19:41:57 · 178 阅读 · 0 评论 -
codeforce C. Remove Adjacent
题意:给你一个字符串,每当一个字符的相邻字符在字母表中与它相邻,你就可以选择删掉它。问最大可以删去的字符是多少思路:最开始想的是从头开始判断,但是情况太多,总是会漏掉。注意到这道题数据很小,所以不如直接暴力求解。每次我们都循环一边,找到满足删去条件的最大的字符,我们把它删掉,然后继续循环,直到没有符合条件的。代码:#include<bits/stdc++.h>using n...原创 2020-03-02 20:25:08 · 541 阅读 · 0 评论 -
分子量(UVA1586)
题目链接:https://vjudge.net/problem/UVA-1586解题思路:比较水的一道题,用常量数组来储存元素质量,然后读取字符串,首先判断是哪个元素,在判断后面的数字是几位的,之后存入数组,在计算得到分子质量。AC代码:#include<bits/stdc++.h>using namespace std;const long long int N = 1...原创 2019-10-23 14:47:05 · 299 阅读 · 0 评论 -
KMP算法
如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm matrix67",字符串B="matrix",我们就说B是A的子串。你可以委婉地问你的MM:“假如你要向你喜欢的...转载 2019-09-24 21:06:03 · 228 阅读 · 0 评论 -
关于字符串比大小的巧妙应用
P1012 拼数设有nn个正整数(n≤20)(n≤20),将它们联接成一排,组成一个最大的多位整数。例如:n=3n=3时,33个整数1313,312312,343343联接成的最大整数为:3433121334331213又如:n=4n=4时,44个整数77,1313,44,246246联接成的最大整数为:74246137424613输入格式第一行,一个正整数nn。第二行,nn个正整数。...原创 2019-09-17 21:46:45 · 195 阅读 · 0 评论 -
字符串的展开
题目描述在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母或数字串替代其中的减号,即,将上面两个子串分别输出为“defgh”和“45678"。在本题中,我们通过增加一些参数的设置,使字符串的展开更为灵活。具体约定如下:(1) 遇到下面的情况需要做字符串的展开:...原创 2019-09-15 17:26:31 · 314 阅读 · 0 评论