字符串
skymeteorite
这个作者很懒,什么都没留下…
展开
-
leetcode 686. 重复叠加字符串匹配
给定两个字符串 A 和 B, 寻找重复叠加字符串A的最小次数,使得字符串B成为叠加后的字符串A的子串,如果不存在则返回 -1。举个例子,A = "abcd",B = "cdabcdab"。答案为 3, 因为 A 重复叠加三遍后为 “abcdabcdabcd”,此时 B 是其子串;A 重复叠加两遍后为"abcdabcd",B 并不是其子串。注意: A 与 B 字符串的长度在1和1...原创 2020-04-10 20:59:53 · 203 阅读 · 0 评论 -
leetcode 680. 验证回文字符串 Ⅱ
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: "aba"输出: True示例 2:输入: "abca"输出: True解释: 你可以删除c字符。注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。方法:双指针分别指向头尾,遇到不同的分别判断删除左右两边后剩下的是不是回文。class Solution { ...原创 2020-04-10 18:03:08 · 109 阅读 · 0 评论 -
leetcode 606. 根据二叉树创建字符串
你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 "()" 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。示例 1:输入: 二叉树: [1,2,3,4] 1 / \ 2 3 / 4 输出: "1(2(4))(3)"解释: 原本将...原创 2020-04-10 17:13:40 · 139 阅读 · 0 评论 -
leetcode 557. 反转字符串中的单词 III
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。方法一:标记每个单词的左右边界再翻转,找到第一个单词的左边界,然后找右边界,找...原创 2020-04-10 14:08:53 · 177 阅读 · 0 评论 -
leetcode 551. 学生出勤记录 I
给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符:'A' : Absent,缺勤'L' : Late,迟到'P' : Present,到场如果一个学生的出勤记录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),那么这个学生会被奖赏。你需要根据这个学生的出勤记录判断他是否会被奖赏。示例 1:输入: "PPALLP"输出: True示例 2:...原创 2020-04-10 12:56:37 · 129 阅读 · 0 评论 -
leetcode 541. 反转字符串 II
给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。示例:输入: s = "abcdefg", k = 2输出: "bacdfeg"要求:该字符串只包含小写的英文字母。给定字符串的长度和 k 在[1...原创 2020-04-10 12:20:24 · 93 阅读 · 0 评论 -
leetcode 520. 检测大写字母
给定一个单词,你需要判断单词的大写使用是否正确。我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如"USA"。单词中所有字母都不是大写,比如"leetcode"。如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。否则,我们定义这个单词没有正确使用大写字母。示例 1:输入: "USA"输出: True示例 2:输入: "FlaG"...原创 2020-04-09 20:42:14 · 103 阅读 · 0 评论 -
leetcode 459. 重复的子字符串
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: "abab"输出: True解释: 可由子字符串 "ab" 重复两次构成。示例 2:输入: "aba"输出: False示例 3:输入: "abcabcabcabc"输出: True解释: 可由子字符串 "abc" 重...原创 2020-04-09 19:09:18 · 158 阅读 · 0 评论 -
leetcode 443. 压缩字符串
给定一组字符,使用原地算法将其压缩。压缩后的长度必须始终小于或等于原数组长度。数组的每个元素应该是长度为1 的字符(不是 int 整数类型)。在完成原地修改输入数组后,返回数组的新长度。 进阶:你能否仅使用O(1) 空间解决问题? 示例 1:输入:["a","a","b","b","c","c","c"]输出:返回6,输入数组的前6个字符应该是:["a",...原创 2020-04-09 18:26:58 · 141 阅读 · 0 评论 -
leetcode 434. 字符串中的单词数
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。示例:输入: "Hello, my name is John"输出: 5方法一:正则表达式筛选\s+删除多个空格,这里除了空格都算字符,逗号等。空间复杂度O(n)class Solution { public int countSegments(String...原创 2020-04-08 00:38:12 · 107 阅读 · 0 评论 -
leetcode 415. 字符串相加
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。注意:num1 和num2 的长度都小于 5100.num1 和num2 都只包含数字 0-9.num1 和num2 都不包含任何前导零。你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。方法:高精度,从低位逐位相加,与leetcode 67.二进制求和相似。class S...原创 2020-04-08 00:21:31 · 105 阅读 · 0 评论 -
leetcode 387. 字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = "leetcode"返回 0.s = "loveleetcode",返回 2. 注意事项:您可以假定该字符串只包含小写字母。方法:统计字母个数,遍历时找到个数为一的位置。class Solution { public int firstUniqChar(Strin...原创 2020-04-07 00:42:25 · 83 阅读 · 0 评论 -
leetcode 383. 赎金信
给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。)注意:你可以假设两个字符串均只含有小写字母。canConstruct("a", "b...原创 2020-04-07 00:31:24 · 112 阅读 · 0 评论 -
leetcode 345. 反转字符串中的元音字母
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入: "hello"输出: "holle"示例 2:输入: "leetcode"输出: "leotcede"说明:元音字母不包含字母"y"。方法:双指针class Solution { public String reverseVowels(String s) { char[]...原创 2020-04-06 19:30:22 · 83 阅读 · 0 评论 -
leetcode 344. 反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:...原创 2020-04-06 19:08:41 · 102 阅读 · 0 评论 -
leetcode 125. 验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false方法一:双指针指向头尾,跳过非字母数字的字符,逐个判断。class Solution ...原创 2020-04-06 18:59:40 · 97 阅读 · 0 评论 -
leetcode 67. 二进制求和
给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。 示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101" 提示:每个字符串仅由字符 '0' 或 '1' 组成。1 <= a.length, b.length ...原创 2020-04-06 18:16:11 · 99 阅读 · 0 评论 -
leetcode 58. 最后一个单词的长度
给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。 示例:输入: "Hello World"输出: 5方法:class Solution { public int...原创 2020-04-06 13:20:56 · 76 阅读 · 0 评论 -
leetcode 38. 外观数列
「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "one 2", "one 1" ("一个二" , ...原创 2020-04-06 11:53:55 · 157 阅读 · 0 评论 -
leetcode 28. 实现 strStr()
实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", needle =...原创 2020-04-05 13:24:00 · 69 阅读 · 0 评论 -
leetcode 20. 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输...原创 2020-04-04 16:13:00 · 77 阅读 · 0 评论 -
leetcode 14. 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。方法:以第一个单词为基准,逐位判断以下的单词是否...原创 2020-04-04 15:23:17 · 80 阅读 · 0 评论 -
leetcode 13. 罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。1...原创 2020-04-04 14:40:05 · 91 阅读 · 0 评论 -
后缀数组学习
参考《算法入门经典》 和http://blog.csdn.net/qq_24451605/article/details/42118325const int maxn = 10010;int wa[maxn], wb[maxn], wv[maxn], ws1[maxn];int cmp(int *r, int a, int b, int l){ return r[a]==r[b]&&原创 2016-05-03 21:36:41 · 285 阅读 · 0 评论 -
spoj 后缀数组
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=115232#problem/B求给出字符串所有的不重复子串,可以重叠,所有后缀的所有前缀就包括了所有字符串 用总字符串的数去减重复字符串的个数 即 所有height【】,#include <iostream>#include <cstdio>#include <cstring>usi原创 2016-05-03 21:42:02 · 310 阅读 · 0 评论 -
poj2774两串最长公共子串
http://poj.org/problem?id=2774 思路:后缀数组。(摘自罗穗骞的国家集训队论文)字符串的任何一个子串都是这个字符串的某个后缀的前缀。求 A 和 B 的最长公共子串等价于求 A 的后缀和 B 的后缀的最长公共前缀的最大值。如果枚举A和 B 的所有的后缀,那么这样做显然效率低下。由于要计算 A 的后缀和 B 的后缀的最长公共前缀,所以先将第二个字符串写在第一个字符串后面,中原创 2016-05-10 15:26:20 · 734 阅读 · 0 评论 -
hdu4513最长递增回文串
http://acm.hdu.edu.cn/showproblem.php?pid=4513判断回文串的基础上使他的单侧递增#include <iostream>#include <cstring>#include <cstdio>#include <cmath>using namespace std;const int maxn=1000005;int s[maxn],t[maxn<<1原创 2016-04-15 11:37:17 · 631 阅读 · 1 评论 -
poj1743最长不重复公共子串
http://poj.org/problem?id=1743 从题目中的意思可以知道,只要满足相邻的差相等便可以了,那我们建立一个相邻并非的数组,题目要求的便是求最长的重复子串长度,而且不可重叠。 由于 相邻差可能为负,则统一加上100,转变为0-200之间的数即可。 如果允许重叠,显然地,答案就是max(height[i])。这是因为sa数组中相邻的两个串公共前缀一定最大,而最长重复子串就是原创 2016-05-04 21:30:51 · 350 阅读 · 0 评论 -
hdu3613回文相关
http://acm.hdu.edu.cn/showproblem.php?pid=3613题意: 给出26个整数,为英文字母表的26个字母对应的价值,然后给出一个串,问把这个串切成两半,如果是回文串就计算它的价值,问最大价值。在manacher时,标记所有的前缀,后缀回文串,最后循环查找最大值#include <stdio.h>#include <string.h>#include <algo原创 2016-04-20 19:13:47 · 451 阅读 · 0 评论 -
hdu5371回文串应用
http://acm.hdu.edu.cn/showproblem.php?pid=5371题意,给出一个串,求最长的子串满足:可以分为等长三段,第一段和第三段相同,第一段和第二段构成回文 直接枚举。 一开始数组开了80010一直tle。。#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>原创 2016-04-20 20:27:07 · 236 阅读 · 0 评论 -
hdu5510
http://acm.hdu.edu.cn/showproblem.php?pid=5510 给出n个串 求最大的n使 前n-1个串不全是他的子串strstr(m,n)函数如果n是m的子串返回在m中的第一个字符的地址 else NULL 注意如果匹配过得串就不必匹配了,因为他已经是别的串的子串了,他的信息完全可以由他下面的串表示#include<iostream>#include<stdio.原创 2016-05-16 16:59:48 · 588 阅读 · 2 评论 -
poj3261最长重复k次子串
http://poj.org/problem?id=3261求最长重复k次的子串长度。二分答案,变成判定性问题,按照连续的height值不小于k分组,如果存在一组满足k各height大于k就存在#include<iostream>#include<cstdio>#include<cstring>>#include<string>#define maxn 1000010using namesp原创 2016-05-08 16:11:46 · 509 阅读 · 0 评论 -
hdu3783 ZOJ字符串处理
#include <iostream>#include <cstring>#include <cstdio>#include <cmath>using namespace std;int main(){ char s[105]; while(cin>>s&&s[0]!='E') { int z=0,o=0,j=0; int len=s原创 2018-02-11 00:01:22 · 295 阅读 · 0 评论 -
数串 组成最大整数
https://www.nowcoder.com/practice/a6a656249f404eb498d16b2f8eaa2c60?tpId=85&tqId=29898&tPage=4&rp=4&ru=/ta/2017test&qru=/ta/2017test/question-ranking设有n个正整数,将他们连接成一排,组成一个最大的多位整数。 如:n=3时,3个整数13,312,343,原创 2018-02-25 23:50:00 · 323 阅读 · 0 评论 -
poj3947最长回文串
manacher 算法学习http://www.cnblogs.com/pangblog/archive/2013/08/16/3263231.htmlhttp://poj.org/problem?id=3974 模板#include <iostream>#include <cstring>#include <cstdio>#include <cmath>using namespace原创 2016-04-15 11:33:13 · 757 阅读 · 0 评论