字符串
字符串题目整理~
algsup
这个作者很懒,什么都没留下…
展开
-
[区间求交]leetcode2409:统计共同度过的日子数(easy)
思路:经典的区间求交集问题。原创 2022-09-21 19:32:12 · 500 阅读 · 0 评论 -
[回文串][贪心]leetcode2384:最大回文数字(medium)
【代码】[回文串][贪心]leetcode6166:最大回文数字(medium)原创 2022-08-21 21:05:43 · 132 阅读 · 0 评论 -
[kmp]leetcode28:实现 strStr() (easy)
思路严蔚敏版kmp算法实现。原创 2022-07-26 16:46:07 · 276 阅读 · 0 评论 -
[字符串]leetcode2309:兼具大小写的最好英文字母(easy)
题目:题解:代码如下:原创 2022-07-07 11:37:50 · 179 阅读 · 0 评论 -
[字符串映射]leetcode890:查找和替换模式(medium)
题目:题目:代码如下:原创 2022-06-12 12:22:20 · 70 阅读 · 1 评论 -
[字符串映射]leetcode290:单词规律(easy)
题目:题解:代码如下:原创 2022-06-12 12:17:05 · 143 阅读 · 0 评论 -
[双字符串映射]leetcode205:同构字符串(easy)
题目:题解:代码如下:原创 2022-06-12 12:12:39 · 165 阅读 · 0 评论 -
[字符串模拟题]leetcode6038:向表达式添加括号后的最小结果(medium)
题目:题解:思路:双重 for 暴力枚举括号就好,其他细节见代码。代码如下:class Solution {public: // 这题不需要写dfs枚举,由于范围较小,只需要双重for枚举即可 string minimizeResult(string s) { int pos=s.find('+'),n=s.size(); int mx=INT_MAX; string res; for(int i=0;i原创 2022-04-10 21:17:15 · 401 阅读 · 0 评论 -
[字符串空格分割]leetcode557:反转字符串中的单词 III(easy)
题目:题解:单纯的想记录这题。。。代码如下:class Solution {public: // 思路:原地翻转 string reverseWords(string s) { int i=0,n=s.size(); while(i<n){ int start=i; // 直到i走到空格为止,表示找到一个单词了 while(i<n&&s[i]!=原创 2022-01-27 10:37:10 · 299 阅读 · 0 评论 -
[贪心][字符串]leetcode1717:删除子字符串的最大得分(medium)
题目:题解:考试时不会做,看题解学会的。思路:贪心法遍历字符串,优先使用 max(x,y),因为只要 x>=y,那么我们取 ab 肯定是可以的,因为我们每取一个 ab,该字符串剩余的部分就会链接在一起,那么我们又可以使用 ab 了,所以出现 ab 时,我们将统计到的 a b 的个数 -1 即可。对于该字符串我们将非 a b 的字符将字符串分成一段段的 abbaba 串,每次被截断的时候,再来更新剩余的 ab 或 ba 个数,此时的个数为 min(a,b),因为 1a 1b 就可以构原创 2021-02-20 19:43:57 · 289 阅读 · 0 评论 -
[贪心][字符串]leetcode1754:构造字典序最大的合并字符串(medium)
题目:题解:贪心法:每次比较两个字符串的字典序,从字典序较大的字符串中选一个字符,插入res。关于贪心的证明法,可以看看y总是怎么做的。LeetCode第227场周赛20mim-30min。代码如下:class Solution {public: // 题解:贪心法 // 每次比较两个字符串的字典序,从字典序较大的字符串中选一个字符 string largestMerge(string s, string t) { int i=0,j=0;原创 2021-02-08 16:41:48 · 289 阅读 · 0 评论 -
[字符串][模拟]leetcode1780:满足三条件之一需改变的最少字符数(medium)
题目:题解:按照题目的思路,进行枚举就行了。代码如下:class Solution {public: // 让 A 中所有字符严格小于 B 中的所有字符 int work(vector<int> cntA,vector<int> cntB) { int res=INT_MAX; // 以字符i为边界,将A中A[i,'Z']的所有字符全部变成小于i的字符,将B中B['a',i-1]的所有字符变成大于i的字符原创 2021-01-24 17:43:23 · 211 阅读 · 0 评论 -
[枚举][字符串]leetcode1729:替换隐藏数字得到的最晚时间(easy)
题目:题解:思路1:直接用 if else 模拟几个情况就行了思路2:暴力枚举,24*60种情况,从大时间到小时间来枚举,然后判断枚举的字符串是否和题目给的字符串是否匹配就行了。代码如下:class Solution {public: // 题解1:纯模拟题 string maximumTime_1(string s) { // 处理s[0]是否为'?'的情况 if(s[0]=='?') { i原创 2021-01-24 16:55:22 · 197 阅读 · 0 评论 -
[字符串]leetcode389:找不同(easy)
题目:题解:题目比较简单,直接看代码及注解即可。代码如下:class Solution {public: //题解1:统计字符串s和t的26个字母的个数,然后遍历26个字母,返回不同数量的字母 char findTheDifference_1(string s, string t) { int count_s[26],count_t[26]; ...原创 2020-02-02 21:50:15 · 368 阅读 · 0 评论 -
[字符串]leetcode1332:删除回文子序列(easy)
题目:题解:本题是一题规律题,因为最后结果只有0、1、2三种结果。若s为空串,返回0;若s不为空串且为回文串,那么返回1;若s不为空串且不为回文串,返回2。原因:因为s不为回文串,那么最小删除次数就为2,第一步删除所有的a,第二步删除所有的b。代码如下:class Solution {public: //题解:找规律,由于字符串只存在字母ab,若字符串为回文串那么返回1...原创 2020-01-26 19:24:48 · 614 阅读 · 0 评论 -
[模拟题]leetcode1324: 竖直打印单词(medium)
题目:题解:模拟题第一步:利用istringstream分割字符串,然后找到最长单词的长度,这样可以就确定结果数组的大小了。第二步:还是利用istringstream分割单词,单词长度不足最长长度的在后面补空格。第三步:遍历res,删除每个单词尾部的空格。代码如下:class Solution {public: vector<string> print...原创 2020-01-19 21:23:23 · 958 阅读 · 0 评论 -
[字符串]leetcode5303:解码字母(easy)
题目:5303. 解码字母到整数映射题解:起初在打比赛的时候用map写的,太傻了,比赛完了看了别人的代码才恍然大悟,原来可以直接用字符相加就好了。注意点:对于两位数字转换为字母时,我们需要将其转换为数字后,再进行'a'的移位;对于一位数字转换为字母时,我们直接将s[i]-'1’转换为数字,然后进行'a'的移位。代码如下:class Solution {public: ...原创 2020-01-05 22:41:36 · 231 阅读 · 0 评论 -
[字符串]leetcode87:扰乱字符串(hard)
题目:87. 扰乱字符串题解:本题就使用全局搜索,暂时也没有更好的解法。代码如下:class Solution {public: bool isScramble(string s1, string s2) { if(s1==s2)return true; int n=s1.size(); int memo[26]; ...原创 2019-12-31 21:38:16 · 210 阅读 · 0 评论 -
[模拟题]leetcode165:比较版本号(medium)
题目:165. 比较版本号题解:纯模拟题,按题目意思编写代码即可。思路:利用小数点将字符串进行分割,然后比较对应段的数字即可。代码如下:class Solution {public: //模拟题:利用小数点将字符串进行分割,然后比较分割到的数字大小 int compareVersion(string version1, string version2) {...原创 2019-12-23 12:20:36 · 222 阅读 · 0 评论 -
[字符串]leetcode71:简化路径(medium)
题目:71. 简化路径题解:题解:模拟题,考验基本代码能力使用istringstream和gitline使用’/‘来分割单词,用vector存放目录。若划分得到为空字符串或者’.’,我们不需要返回到上一层目录,进行下一次分割;若我们划分得到为"…"且vector不为空,我们需要返回上一层目录,也就是删除vector的尾元素;若划分得到的单词为目录,我们就添加这个单词到vector中...原创 2019-12-19 22:26:24 · 200 阅读 · 0 评论 -
[字符串]leetcode65:有效数字(hard)
题目:65. 有效数字题解:本题挺难的,主要一些小问题很难处理,在这里我提供两种方法解题。第一种方法比较简单,第二种方法比较难,我也没懂,以后研究吧。题解①:暴力法1)先去除字符串首尾的空格2)然后根据e划分指数和底数3)判断指数和底数是否合法即可题解②:有限自动机,表驱动(需要参考编译原理,主要我没学,我也不会呜呜呜)题解①代码如下:class Solutio...原创 2019-12-09 11:22:57 · 209 阅读 · 0 评论 -
[字符串]leetocde58:最后第一个单词的长度(easy)
题目:题解:题解1:先反转字符串,然后利用istringstream读取第一个字符,然后返回第一个字符串的长度题解2:STL算法,先从后向前寻找最后一个字符出现的位置,然后从最后一个字符出现的位置向前寻找下一个空格的位置,二者做差便得到最后结果了。代码如下:class Solution {public: //题解1:利用istringstream读取单词 int leng...原创 2019-12-04 21:17:32 · 181 阅读 · 0 评论 -
[字符串][竖式相乘]leetcode43:字符串相乘(medium)
题目:题解:竖式算法,规律如下:1)乘数num1位数为M,被乘数num2位数为N, num1 x num2 结果 res 最大总位数为 M+N2)num1[i] x num2[j]的结果为 tmp(位数为两位,"0x","xy"的形式),其第一位位于 res[i+j],第二位位于 res[i+j+1]。代码如下:class Solution {public: st...原创 2019-12-04 14:49:35 · 238 阅读 · 0 评论 -
[字符串]leetcode415:字符串相加(easy)
题目:题解:题目比较简单,直接看代码就好了。代码如下:class Solution {public: string addStrings(string num1, string num2) { string result=""; int carry=0,i=num1.size()-1,j=num2.size()-1; while(...原创 2019-12-04 11:59:36 · 178 阅读 · 0 评论 -
[字符串]leetcode38:报数(easy)
题目:38. 报数题解:阅读理解题,读懂题目意思后,暴力解题即可。代码如下:class Solution {public: string countAndSay(int n) { string result="1"; if(n==1)return result; for(int i=1;i<n;++i) ...原创 2019-12-03 15:16:23 · 161 阅读 · 0 评论 -
[字符串]leetcode6:Z 字形变换(medium)
题目:6. Z 字形变换题解:规律题可以观察到到Z字形字符串对应原始字符串的下标是由左上至右下递增的,所以我们需要模拟这个行索引的变化,在遍历 s 中把每个字符填到正确的行record[i]。遍历字符串:1)record[i]+=c:表示将字符c添加到对应的行2)i+=flag:表示更新下一个字符对应的行号3)flag=-flag:表示在达到Z字形转折点时,执行反向4)推...原创 2019-11-25 19:46:56 · 243 阅读 · 0 评论 -
[字符串][数学]leetcode8:字符串转换整数 (atoi) (medium)
题目:8. 字符串转换整数 (atoi)题解:题解1:利用istringstream将str的第一个单词读取到res中:若第一个单词为string则读取不成功,res为0;若超过int范围,res为最大值或最小值;其他情况,读取成功。题解2:常规解法,看代码就好了,因为没有遇到具体的算法点。代码如下:class Solution {public: //解法1:利...原创 2019-11-25 15:31:45 · 205 阅读 · 0 评论 -
[字符串]leetcode316:去除重复字符(hard)
题目:题解:1)建立两个表:count表示字符表,uesd用记录字符是否已添加的表2)第一遍遍历字符串,用来建立字符表3)第二遍遍历字符串,用来生成无重复字符串4)相关注解已给,有什么不懂的欢迎交流代码如下:class Solution {public: //count表示字符表,used用来记录已经添加过的字符 string removeDuplicateL...原创 2019-11-19 21:17:35 · 972 阅读 · 0 评论 -
[字符串]leetcode273:整数转换英文表示(hard)
题目:273.整数转换英文表示题解:1)将数组分为三组,第一组为那些大单位(“Billion”, “Million”, “Thousand”),第二组为20-90之间整数值的单位(“Twenty”, “Thirty”, “Forty”, “Fifty”, “Sixty”, “Seventy”, “Eighty”, “Ninety”),第三组为0-19之间的小单位数字(“Zero”, ...原创 2019-11-19 17:03:31 · 254 阅读 · 0 评论 -
[双指针][字符串]leetcode125:验证回文串(easy)
题目:题解:双指针法使用首尾指针向中间移动,若遇到标点符号,我们需要使用isalnum()判断跳过即可;若遇到大写字母,我们需要使用tolower()转换为小写字符即可,这个函数对于数字和小写字母不做转换仅仅针对大写字母。代码如下:class Solution {public: //题解:双指针法 bool isPalindrome(string s) { ...原创 2019-11-02 14:58:53 · 302 阅读 · 0 评论 -
[dp][马拉车算法][中心扩展法]leetcode5:最长回文子串(medium)
题目:题解:①:动态规划dp[i][j]表示s[i]至s[j]所表示的子字符串是否为回文串,是则为1,不是则为0。这样可根据s[i]是否等于s[j],可以把转移情况分为两类:1)若s[i]==s[j],那么只要s[i+1]至s[j-1]是回文串,那么s[i]至s[j]就是回文串;如果s[i+1]至s[j-1]不是回文串,则s[i]至s[j]就不是回文串。2)若s[i]!=s[j],...原创 2019-10-29 00:34:19 · 297 阅读 · 0 评论 -
[字符串]leetcode242:有效的字母异位词(easy)
题目:题解:水题,题解直接看代码即可。代码如下:class Solution {public: //解法1:STL算法,利用异位词的性质(相同的一组字符串构成的不同单词),所以直接给两个单词排序,然后比较相等即可 bool isAnagram_1(string s, string t) { sort(s.begin(),s.end()); ...原创 2019-10-10 22:24:12 · 307 阅读 · 0 评论