![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串
Huglight
这个作者很懒,什么都没留下…
展开
-
NowCoder 表示数值的字符串
题意:给一个字符串,判断该字符串是否表示数值思路:表示数值就那么几个条件:e或E之前最多只能有一个小数点,只能有一个e或E,且后面为整数,符号位只能在第一位或e和E后第一位,依次判断就行public class Solution { public boolean isNumeric(char[] str) { int start = 0, cnt = 0; ...原创 2020-02-10 23:21:46 · 130 阅读 · 0 评论 -
NowCoder 正则表达式匹配 递归
题意:给一个原串和一个模式串,’.‘表示匹配任意一个字符,’*'表示前面字符可以出现任意次,如"aaa"可由"a.a"或"ab *aa"匹配,求模式串是否匹配原串思路:若某个位置没有".",后面也没有" * “,而两字符又不同,则不匹配,否则前后找下一字符。难点在处理有” * "的情况,因为可以匹配任意次,故可以不匹配或者匹配特定次数,而次数未知,故可先匹配一次,模式串位置不变,原串位置加1,递...原创 2020-02-10 22:03:05 · 111 阅读 · 0 评论 -
LeetCode 43.字符串相乘 模拟
题意:给两个十进制字符串,求出两数相乘得到的结果字符串思路:字符串长度太大,而且用BigInteger做这题就没意思了,所以只能按照乘法法则模拟。首先模拟两字符串数相加过程,之后模拟多位和个位相乘过程,之后按照位数往后添0相加得到总和就是结果class Solution { public String multiply(String num1, String num2) { ...原创 2020-01-30 22:16:43 · 124 阅读 · 0 评论 -
POJ 2406 Power Strings KMP 最小循环节
题意:给出一个字符串,求出字符串中重复次数最多的子串的重复次数思路:在复习一遍,n-fail[n]表示长度为n的字符串中最小循环节的长度,首先求出fail数组,再求出串中最小循环节长度,若长度可被总长整除,则答案即为总长/循环节长度,否则就是1#include<iostream>#include<cstdio>#include<cmath>#inclu...原创 2019-12-25 21:50:07 · 158 阅读 · 0 评论 -
HDU 1358 Period KMP 循环节
题意:给一串序列,求出序列所有前缀中所有循环次数大于1的前缀长度及该前缀中循环节循环次数思路:从1到n递增序列长度,若当前长度中存在循环节,且循环次数大于1,则输出#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<vector>...原创 2019-08-28 20:13:44 · 121 阅读 · 0 评论 -
HDU 3746 Cyclic Nacklace KMP 最小循环节
题意:给一串序列,求出在后面最少补多少个字符,使得序列变为循环重复的几个序列思路:对序列求fail数组,n-fail[n]即为最小循环节的长度。取k=n-fail[n],当n%k==0时,序列自己就重复,不需添加;fail[n]==0时,序列到末尾没有自重复的序列,添加元素大小即为序列长度;其他情况,即序列中有一部分自重复序列,就添加还缺的那部分即可#include<iostream&g...原创 2019-08-28 19:51:57 · 121 阅读 · 0 评论 -
Leetcode 周赛150
拼写单词题意:给n个单词,和一串字母表,表中每个单词只能用一次,但个数不限,求字母表能匹配的单词个数,输出匹配单词长度和思路:暴力匹配class Solution {public: int countCharacters(vector<string>& words, string chars) { int cnt[30]; m...原创 2019-08-18 14:21:05 · 122 阅读 · 0 评论 -
Leetcode 5. 最长回文子串 Manacher
题意:求出一个字符串的最长回文子串,如"babad"输入“bab”思路:首先可以枚举每个点,以该点为中心扩展,取扩展半径最大的为答案。由于偶数长度串中心为两个点,故可以在两点间插入一个任意字符使得不管奇数偶数串都变为奇数串来处理class Solution {public: string longestPalindrome(string s) { int maxx =...原创 2019-08-18 10:28:00 · 117 阅读 · 0 评论 -
HDU 1711 Number Sequence KMP
题意:给两串序列,求出第二串序列在第一串序列中第一次出现的位置(序列头在第一串序列中的位置),不存在则输出-1思路:KMP算法裸题。KMP算法维护一个fail数组,储存某点之前的最长公共前缀后缀的位置,若匹配到某点时失配,则不会从匹配序列头开始重新匹配下一个待配字符,而是从fail指针指向的节点开始匹配。AC自动机就是利用这个原理在Trie树上改进得到的。#include<iostrea...原创 2019-08-17 11:41:13 · 115 阅读 · 0 评论 -
HDU 1686 Oulipo KMP
题意:给出一个模式串和一个待匹配串,求模式串在待匹配串中出现的次数思路:KMP匹配成功后答案+1,返回fail位置继续匹配直到匹配到待匹配串尾#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<vector>#include&l...原创 2019-08-17 14:43:09 · 123 阅读 · 0 评论 -
HDU 2222 Keywords Search AC自动机
题意:给定n个关键字,每个关键字为一个单词,和一个长字符串,求字符串中包含的关键字数量思路:AC自动机模版题AC自动机详细介绍https://blog.csdn.net/bestsort/article/details/82947639主要就是在Trie树的基础上加上了一个fail指针,fail指针指向包含最长相同前缀的根节点的另一子节点,字符串匹配过程中当前字符失配时,转向fail指针指向...转载 2019-08-13 12:02:30 · 89 阅读 · 0 评论 -
BZOJ 3172 单词 AC自动机 Fail树(难)
题意:给n个单词,求出每个单词在给出的所有单词中出现的次数思路:Fail树:将AC自动机里fail边逆向,就构成了一棵树。查找一个串在所有串中的出现次数,即查找这个串和所有fail节点指向它的节点(后缀是它)出现次数的总和。建立fail树之后,所求就变成了求fail树中对应串的子树出现次数和。每次插入一个串时,记录其当前出现次数,之后再用dfs求出fail树中每个串的子树和即可。#includ...原创 2019-08-13 15:36:41 · 163 阅读 · 0 评论 -
LeetCode 208 实现Trie(前缀树)
用一个map储存一个节点的所有子节点,插入时在最后一个节点标记这个节点为一个单词,查找时如果单词节点都存在且最后一个节点被标记为一个单词,表示该单词存在,根据前缀搜索时就无需判断标记,如果节点都存在且顺序对应就返回trueclass Trie { private class Node { public Map<Character, Node> next = new Has...原创 2019-06-11 22:00:59 · 145 阅读 · 0 评论 -
HDU 2087 剪花布条 KMP
题意:给一串字符串,和一串模式串,求出原串可以剪出多少个模式串思路:KMP匹配成功后返回模式串头继续匹配原串下一个字符#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<vector>#include<queue>...原创 2019-08-18 16:19:52 · 105 阅读 · 0 评论