随笔分类 -  leetcode-字符串

摘要:题目: 解答: 说实话,我自己是没有想出来这道题要用到动态规划的思想,而且一开始也没有理解这种方法。 具体方法: (1)本题的子问题设为从字符串 s 的前 i 个元素中能否切分出字典 wordDict 里面的单词。因为考虑到空字符串的问题,我们将用于记录子问题信息的vector定义为 len+1 大 阅读全文
posted @ 2020-05-16 13:00 梦醒潇湘 阅读(555) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 4 vector<vector<string>> partition(string s) 5 { 6 vector<string> temp; 7 vector<vector<string>> result; 8 9 ge 阅读全文
posted @ 2020-05-16 12:54 梦醒潇湘 阅读(269) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 int minDistance(string word1, string word2) 4 { 5 vector<vector<int>> dp(word1.size() + 1, vector<int>(word2.si 阅读全文
posted @ 2020-05-05 21:16 梦醒潇湘 阅读(143) 评论(0) 推荐(0)
只有注册用户登录后才能阅读该文。
posted @ 2020-05-05 20:54 梦醒潇湘 阅读(0) 评论(0) 推荐(0)
摘要:题目: 解答: 首先判断两个字符串长度,相差大于一返回 false 双指针遍历两个字符串,同时记录编辑次数 op_cnt: 若 first[i] == second[j],不需编辑,i,j 加一 若 first[i] != second[j],分为三种情况: first[i] == second[j 阅读全文
posted @ 2020-05-04 15:21 梦醒潇湘 阅读(159) 评论(0) 推荐(0)
摘要:题目: 解答: 解题思路: (1)使用哈希集合存储列表中的每一个单词,接着遍历列表的中的每个单词判断其是否由其他单词组合而成; (2)递归查找时,因为不能由其自身组成,因此每次从哈希集合中删除其自身; (3)递归分割查找每一种可能,当一种分割到空串时,返回true,所有的情况遍历完毕,返回false 阅读全文
posted @ 2020-05-04 15:13 梦醒潇湘 阅读(228) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 int findClosest(vector<string>& words, string word1, string word2) 4 { 5 6 int t1 = -1; 7 int t2 = -1; 8 int re 阅读全文
posted @ 2020-05-04 15:05 梦醒潇湘 阅读(221) 评论(0) 推荐(0)
摘要:题目: 解答: 解题思路: 此题主要通过如下两个步骤来完成: (1)将输入的中缀表达式转为后缀表达式(即逆波兰表达式); (2)计算逆波兰表达式; 用到的数据结构主要是栈。 中缀表达式转后缀表达式(逆波兰表达式) (1)变量及函数说明 getPriority(char ch): 返回运算符的优先级 阅读全文
posted @ 2020-05-04 15:01 梦醒潇湘 阅读(234) 评论(0) 推荐(0)
摘要:题目: 解答: 变位词利用sort后可相同 哈希表添加词下标即可 之后遍历哈希表根据下标添加变位词。 1 class Solution { 2 public: 3 vector<vector<string>> groupAnagrams(vector<string>& strs) 4 { 5 vec 阅读全文
posted @ 2020-05-04 14:52 梦醒潇湘 阅读(169) 评论(0) 推荐(0)
摘要:题目: 解答: 只有在我们知道序列仍然保持有效时才添加 ‘(‘ or ‘)’。我们可以通过跟踪到目前为止放置的左括号和右括号的数目来做到这一点。 如果我们还剩一个位置,我们可以开始放一个左括号。 如果它不超过左括号的数量,我们可以放一个右括号。 1 class Solution { 2 3 vect 阅读全文
posted @ 2020-05-04 14:48 梦醒潇湘 阅读(183) 评论(0) 推荐(0)
摘要:题目: 解答: 根据常规十进制小数转二进制小数的方法进行转化;十进制的小数转换为二进制,主要是小数部分乘以2,取整数部分依次从左往右放在小数点后,直至小数点后为0。 例如:十进制的0.125,要转换为二进制的小数。 (1)0.125 x 2 = 0.25 ==> 0 (2)0.25 x 2 = 0. 阅读全文
posted @ 2020-05-04 14:44 梦醒潇湘 阅读(223) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 int strToInt(string str) 4 { 5 if (str.size() == 0) 6 { 7 return 0; 8 } 9 10 int i = 0; 11 int minus = 1; 12 13 阅读全文
posted @ 2020-05-04 14:35 梦醒潇湘 阅读(163) 评论(0) 推荐(0)
摘要:题目: 解答: 思路:双指针。 1 class Solution { 2 public: 3 int cnt[3]; 4 public: 5 int numberOfSubstrings(string s) 6 { 7 int len=(int)s.length(); 8 int ans=0; 9 阅读全文
posted @ 2020-05-04 13:22 梦醒潇湘 阅读(190) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 int numSteps(string s) 4 { 5 int idx = s.size() - 1; 6 int ans = 0; 7 while(idx > 0) 8 { 9 //第一位最后肯定剩1,不另计算 10 阅读全文
posted @ 2020-05-04 13:18 梦醒潇湘 阅读(247) 评论(0) 推荐(0)
摘要:题目: 解答: 就是逐个遍历从 1 到 N 的数字,转换成二进制字符串(去掉头部无用的 '0')看看是否在字符串 S 中,遇到不在的就返回 false, 要是都在就返回 true。 1 class Solution { 2 public: 3 bool queryString(string S, i 阅读全文
posted @ 2020-05-04 13:08 梦醒潇湘 阅读(259) 评论(0) 推荐(0)
摘要:题目: 解答: 依次遍历S中的每个字符,如果当前字符为c,判断栈顶两个字符是不是b和a,如果是,两次退栈, 否则可直接判断S不是有效的字符串, 当前前提是先判断栈中元素个数是不是大于2,如果不是,直接判断无效。如果是 字符a 和b直接入栈。 1 class Solution { 2 public: 阅读全文
posted @ 2020-05-04 13:05 梦醒潇湘 阅读(189) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 int scoreOfParentheses(string S) 4 { 5 stack<int> stack; 6 stack.push(0); // The score of the current frame 7 8 阅读全文
posted @ 2020-05-04 13:00 梦醒潇湘 阅读(201) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 string shiftingLetters(string S, vector<int>& shifts) 4 { 5 int size = (int)S.size(); 6 int cnt = 0; 7 for (int 阅读全文
posted @ 2020-05-04 12:52 梦醒潇湘 阅读(223) 评论(0) 推荐(0)
摘要:题目: 解答: 优先队列,根据字母数量进行排序。 (1)记录每个字母在字符串中的数量(哈希表); (2)根据字母数量降序排序(插入优先队列,以字母数量较大优先级较高,类似于大顶堆) (3)若队列顶部字母的数量大于一半则无法构造,直接返回空字符串(奇偶有别) (4)按照字母数量降序顺序,当队列不空时, 阅读全文
posted @ 2020-05-04 12:45 梦醒潇湘 阅读(275) 评论(0) 推荐(0)
摘要:题目: 解答: 这道题因为只需要判断是否可以构成有效的括号,并不需要列举出合法的解。可以直接遍历一遍字符串,记录出现的括号和*的情况。 1 class Solution { 2 public: 3 bool checkValidString(string s) 4 { 5 // left和star分 阅读全文
posted @ 2020-05-04 12:39 梦醒潇湘 阅读(262) 评论(0) 推荐(0)