
字符串类别问题
谢蟹蟹猴啊
这个作者很懒,什么都没留下…
展开
-
面试题 10.02. 变位词组 ---基于哈希表的字符串排序~~~
class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs) { //整体还是基于排序的思路 unordered_map<string,vector<string>>map; vector<vector<string>>res; for(auto & st.原创 2021-07-18 10:38:12 · 109 阅读 · 0 评论 -
6. Z 字形变换
思路: 这个题目挺有意思的,就是按照Z型变换从上到下,从左到右来建立排列,然后输出的时候按照行来读取。 我们可以每次按顺序把行的元素读取再拼接!关键在于如何读取每一行的元素是谁呢? 注意到我们就是在Z变换图上索引元素,当行等于0开始就是从上往下不断增加行,然后增加字符串的索引下标。当行走到尾巴的时候行就开始减少了class Solution {public: string convert(string s, int numRows) { if (numRo.原创 2021-07-09 16:00:24 · 82 阅读 · 0 评论 -
451. 根据字符出现频率排序 -自定义排序
451. 根据字符出现频率排序题目: 给定一个字符串,请将字符串里的字符按照出现的频率降序排列。 示例1:输入:"tree"输出:"eert"解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。思路: 这个题目一看感觉非常简单,但是处理的时候会麻烦点。直观上就是用哈希表来计算频率,根据频率排序,但是计算频率简单,从频域中进行排序又要做些手段了。为了方便排序,我们把哈希表的元素提取auto取出来原创 2021-07-03 10:54:11 · 162 阅读 · 0 评论 -
字符串的排列+字符串的相加+字符串的相乘
思路: 排列不重复,在实际使用中体现在在某一层排列中出现3个2,我们其实需要这个2出现一次,也就是说在同一层的排列中,我们只要1次2进入下层,其他的不用参与分支。怎么处理?可以对原排列按顺序排起来,让2相邻,第一次2进去后,然后撤回嘛,如果发现上一次元素和这次相同,那就可以continue了!不,还要保证上一个元素没被vis,因为撤回了,没被vis,为什么要加这个呢,因为如果vis了,有可能是不同层的,上一层使用2,下一层我当然可以继续使用2呀~~在这里全排列不重复和位置有关,而不是值了,所以vis从.原创 2021-06-22 14:16:55 · 100 阅读 · 0 评论 -
1239. 串联字符串的最大长度
思路: 遇到这种题目不要慌,想清楚到底要什么! 我们不要实际的字符串是什么,顺序也不重要,只需要只要组合的最大长度,那么很明显就是回溯的问题。涉及到组合的问题!马上想到回溯,就是选不选 然后彼此影响的。这里每一层第一层是选N个元素,第二层是选什么呢?我们选比他指标大的元素,每次进入循环的下一个元素是当前指标的下一个。因为前面元素别人都帮我们选好了还选啥呢。 即这种问题,每次进入的是当前的索引,在这个基础上判断,同一层的递进,因为前面都是判断过的,所以必须是index+1, 说白了就是这个位置要.原创 2021-06-19 15:06:57 · 104 阅读 · 0 评论 -
Leetcode14:最长公共前缀(字符串题目!!)
题目: 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串示例1:输入:strs = ["flower","flow","flight"]输出:"fl"思路1: 这道题目看起来很简单,但是一时之间不知道如何下笔。第一种思路是横向遍历,依次遍历字符串数组中的每个字符串,对于每个遍历到的字符串,更新最长公共前缀,当遍历完所有的字符串以后,即可得到字符串数组中的最长公共前缀。下面这个图解释的非常清楚,用到了全集的公共部分是子集不断公共得出来的。全集的公共部分一定是子集原创 2021-05-31 10:52:25 · 152 阅读 · 0 评论 -
Leetcode 5:最长回文字串(**中等!!)
题目:给你一个字符串 s,找到 s 中最长的回文子串。注意:回文串指的是正反两个方向读都是一样的字符串。代码1:下面的代码贴上只是纪念下,一开始做题不知道什么是回文串,案例测试太简单了,导致我理解的是 aaaabb 返回aaaa; cbcaaa返回aaa cbbcaaa返回cbbc。 然后我突然想用最笨的方法来解决,就是纯逻辑思维,中间遇到了很多边界条件不能处理,比如 cbcaa,aaaa 这种连续变量临界的条件,总之下面这个笨笨的代码最终也算是实现了我自认为的回文串。。class Solution原创 2021-05-27 20:24:51 · 97 阅读 · 0 评论 -
Leetcode:1190反转每对括号间的子串(中等 ※※)
这道题类似的有 Leetcode394:字符串解码,该题的求解放在博客后面。题目:给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。示例:输入:s = "(u(love)i)"输出:"iloveu"思路1: 考虑用栈的思想,因为是从内到外反转,所以就每次遇到“)”再处理,因为先遇到的右括号意味着第一批需要处理的元素出现了。除此之外其他的元素我们都给他入栈。先遇到右括号,那就原创 2021-05-26 17:27:26 · 210 阅读 · 0 评论