
字符串
落春只在无意间
不能打败我的只会让我更强大
展开
-
KMP 中next 数组的性质
给一个字符串S, 求出所有前缀pre,使得这个前缀也正好是S的后缀。 输出所有前缀的结束位置代码:int ans[maxn]; int m = 0; ans[m++] = n; //自己本身就是一个最长的 int k = next[n]; while (k != 0) { ans[m++] = k; k = next[k]; }字符串的循环个数利用KMP算法,求字符串的特征向量next,若len可以被len - next[len]整除,则最大循环次数n为len/原创 2021-08-14 20:37:36 · 186 阅读 · 0 评论 -
最长回文串
题目描述:给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:“abccccdd”输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。思路:我们用哈希表(映射都可以)记录下每个字符出现的次数。然后有以下几种情况:如果个数为偶数,因为偶数可以拆到两边,所以直接加上偶数个数即可。奇数,如果字符个数为奇原创 2021-08-23 19:24:43 · 1517 阅读 · 0 评论 -
大数相乘(c语言/c++)
大数相乘(c语言/c++)方法一:做加法方法二、做乘法原创 2021-08-25 13:18:52 · 938 阅读 · 0 评论 -
字符串相加/大数相加(代码极短)
字符串相加(思路新奇,代码极短)题目描述:给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。原创 2021-08-23 18:50:52 · 263 阅读 · 0 评论 -
最长公共子串
问题描述:查找字符串数组中最长的公共前缀字符串。代码:#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<string>#include<queue>#include<map>#include<stack&g原创 2021-08-14 20:44:10 · 111 阅读 · 0 评论 -
KMP算法之 好理解的模板
主要作用:能够在线性复杂度内求出一个串在另一个串的所有匹配位置。说明:设模板串是 pattern, 令 next[i] = max{k|[pattern[0..k−1] = pattern[i−k+l..i] 得到。求解next[i]可以使用动态规划,即 next[i+1] 可以由next[i],next[next[i]],…得到。得到next[i]们数组之后,设两个指针i和j,分别指向文本串和模式串,成功匹配得向后移动j,否则把/移动到 next[j]。 当j移动到模式串末尾时,就说明匹配成功。首先原创 2021-08-14 20:16:17 · 99 阅读 · 0 评论 -
P1914 小书童——凯撒密码
题目背景某蒟蒻迷上了“小书童”,有一天登陆时忘记密码了(他没绑定邮箱or手机),于是便把问题抛给了神犇你。题目描述蒟蒻虽然忘记密码,但他还记得密码是由一个字符串组成。密码是由原文字符串(由不超过 50 个小写字母组成)中每个字母向后移动 nn 位形成的。z 的下一个字母是 a,如此循环。他现在找到了移动前的原文字符串及 nn,请你求出密码。输入格式第一行:n。第二行:未移动前的一串字母输出格式一行,是此蒟蒻的密码代码:#include<stdio.h>#include<原创 2021-08-15 10:39:48 · 331 阅读 · 0 评论 -
划分字母区间(双指针,贪心)
划分字母区间(双指针,贪心)双指针贪心原创 2021-08-24 23:40:46 · 421 阅读 · 0 评论