------字符串
文章平均质量分 95
_zhj
加油!
展开
-
KMP简单模板
KMP代码:#include #include #define N 100 int KMP(char s[], char t[], int lens, int lent);void GetNext(char t[], int lent);int next[N];int main(){ char s[N], t[N]; printf("请输入母串: "); scanf("%s"原创 2017-05-08 21:25:16 · 255 阅读 · 0 评论 -
HDU5510 Bazinga
Bazinga;字符串原创 2017-05-08 16:09:33 · 368 阅读 · 0 评论 -
最长公共子串(一步步优化)
文章参考摘自:链接(大牛写的很好,所以直接粘过来了)最长公共子串(Longest Common Substring)是一个非常经典的面试题目,在实际的程序中也有很高的实用价值,所以把该问题的解法总结在本文重。不过不单单只是写出该问题的基本解决代码而已,关键还是享受把学习算法一步步的优化,让时间和空间复杂度一步步的减少的惊喜。概览最长公共子串问题的基本表述为:转载 2017-08-19 10:35:30 · 703 阅读 · 0 评论 -
HDU2222(AC自动机模板题)
Aho-Corasick automaton,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法。AC自动机是字典树和KMP的结合。可以解决的问题:给定多个单词,再给一个字符串,问有多少个单词在这个字符串中出现过。这个问题可以用KMP挨个串匹配,但是如果单词数目多的话肯定会超时。数中节点:struct node{ node *next[26]; n原创 2018-01-11 17:16:01 · 299 阅读 · 0 评论 -
HDU3068 Manacher求最长回文
manacher算法:可以在O(n)的时间内求出一个字符串的最长回文的大小。算法的思想是利用前边已求出的回文子串,对于以当前位置为中心求回文串不必从1开始向两边遍历。具体算法可以参考这篇文章:http://blog.csdn.net/dyx404514/article/details/42061017———————————————————————————————————————————原创 2018-01-21 15:13:35 · 212 阅读 · 0 评论 -
HDU 6153 A Secret(KMP变形)
题意:给两个字符串S1和S2,求S2长度为i的后缀在S1中出现的次数为num[i],求所有的i*num[i]的和(模1e9+7)。解析:此题可以利用KMP中next数组来做,求next数组不变,在KMP两个串匹配中稍作修改即可。首先将两个串反转一下,这样就是求S2的前缀在S1中出现的次数了。在KMP匹配中,用一个数组num来记录长度i的前缀的次数。每次匹配到长度为i的前缀时,num[i原创 2018-02-05 16:14:23 · 347 阅读 · 0 评论 -
把数组排成最小的数
题目(来源:牛客上剑指offer):输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路:现将int数组转换成string数组,然后对string数组排序,排序规则是:str1+str2与str2+str1比较,如果str1+str2 < str2+st...原创 2019-04-05 21:52:01 · 120 阅读 · 0 评论 -
C++高精度大数运算
一、大数相加(两个正数)1、最简单的,两个整形大数相加练习:HDU1002代码:#include <iostream>#include <algorithm>#include <string>using namespace std;// 两个整形大数相加string Add(string &num1, string &...原创 2019-08-08 22:30:45 · 696 阅读 · 0 评论