随笔分类 -  leetcode-字符串

摘要:题目: 解答: 简单来说就是a,b不相等的话就返回a,b最长的长度,否则就-1。 1 class Solution { 2 public: 3 int findLUSlength(string a, string b) 4 { 5 if(a == b) 6 { 7 return -1; 8 } 9 阅读全文
posted @ 2020-05-03 20:09 梦醒潇湘 阅读(164) 评论(0) 推荐(0)
摘要:题目: 解答: 其实只要记录有多少个大写字母即可,在遍历过程中,如果大写字母的个数小于正在遍历的下标,说明不符合题解,既不是连续的出现大写字母,如 “AaAa” 遍历到第二个 A 时的情况。 最终判断是否为全大写或只是首字母大写即可。 1 class Solution { 2 public: 3 b 阅读全文
posted @ 2020-05-03 20:05 梦醒潇湘 阅读(204) 评论(0) 推荐(0)
摘要:题目: 解答: 这题有参考别人的想法,换做我确实很难想到,但还是用我自己的话总结下思路吧。 思路大致如下:如果一个非空字符串s可以由它的一个子串重复多次构成,可以理解为s中存在m个子串,那么当两个字符串结合起来变成ss时,字符串s在新字符串ss的第二次位置不等于s的长度(相当于前一个字符串s中有n个 阅读全文
posted @ 2020-05-03 20:02 梦醒潇湘 阅读(271) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 int compress(vector<char>& chars) 4 { 5 6 if (chars.empty()) 7 { 8 return 0; 9 } 10 11 size_t j = 0; 12 int cnt 阅读全文
posted @ 2020-05-03 19:56 梦醒潇湘 阅读(146) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 int countSegments(string s) 4 { 5 int res = 0; 6 int flag=1; 7 if (s.size() == 0) 8 { 9 return res; 10 } 11 12 阅读全文
posted @ 2020-05-03 19:50 梦醒潇湘 阅读(179) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 string addStrings(string num1, string num2) 4 { 5 int la = num1.size(); 6 int lb = num2.size(); 7 8 string sum 阅读全文
posted @ 2020-05-03 19:47 梦醒潇湘 阅读(164) 评论(0) 推荐(0)
摘要:题目: 解答: 方法一: 线性时间复杂度解法这道题最优的解法就是线性复杂度了,为了保证每个元素是唯一的,至少得把每个字符都遍历一遍。 算法的思路就是遍历一遍字符串,然后把字符串中每个字符出现的次数保存在一个散列表中。这个过程的时间复杂度为 O(N)O(N),其中 NN 为字符串的长度。 接下来需要再 阅读全文
posted @ 2020-05-03 19:39 梦醒潇湘 阅读(182) 评论(0) 推荐(0)
摘要:题目: 解答: 思路:此题最难的就是读懂题,此题的意思是用后面字符串的字符是否可以组成前面一个字符,所以此题只需要判断后面各个字符的总数是否大于前面字符的即可,这又成了一个映射问题,字符映射个数,所以我们又可以用map来解决问题,只需要先遍历后面字符串统计所有字符出现的次数,然后在遍历前面一个字符串 阅读全文
posted @ 2020-05-03 19:34 梦醒潇湘 阅读(149) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 private: 3 bool isOrigin(char c) 4 { 5 if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || 6 c == 'A' || c == 阅读全文
posted @ 2020-05-03 19:31 梦醒潇湘 阅读(194) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 void reverseString(vector<char>& s) 4 { 5 if (s.size() <= 1) 6 { 7 return; 8 } 9 10 int beg = 0; 11 int end = s 阅读全文
posted @ 2020-05-03 19:21 梦醒潇湘 阅读(208) 评论(0) 推荐(0)
摘要:题目: 解法: 设置两个指针,一前以后进行扫描判断。 1 class Solution { 2 public: 3 4 //判断是否为合法,即是否为数字和字母 5 bool isAlphanumeric(char &c) 6 { 7 if(c >= 'A' && c <= 'Z') 8 { 9 c 阅读全文
posted @ 2020-05-03 19:18 梦醒潇湘 阅读(147) 评论(0) 推荐(0)
摘要:题目: 解答: 学习下这种思路,尤其是对最后一次进位的处理。 1 class Solution { 2 public: 3 string addBinary(string a, string b) 4 { 5 int la = a.size(); 6 int lb = b.size(); 7 8 s 阅读全文
posted @ 2020-05-03 19:03 梦醒潇湘 阅读(213) 评论(0) 推荐(0)
摘要:题目: 解答: (1)从前向后扫描,找到我们所关注的最后一个word,然后计算其长度。 1 class Solution { 2 public: 3 int lengthOfLastWord(string s) 4 { 5 int ctr = 0; 6 int last_ctr = 0; 7 8 f 阅读全文
posted @ 2020-05-03 17:43 梦醒潇湘 阅读(145) 评论(0) 推荐(0)
摘要:题目: 解答: 递归+记忆。 class Solution { public: unordered_map<int,string> map; string countAndSay(int n) { string res; if(map.count(n)) { return map[n]; } els 阅读全文
posted @ 2020-05-03 17:39 梦醒潇湘 阅读(157) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 int strStr(string haystack, string needle) 4 { 5 if(needle == "") 6 { 7 return 0; 8 } 9 if(haystack == "") 10 { 阅读全文
posted @ 2020-05-03 17:36 梦醒潇湘 阅读(133) 评论(0) 推荐(0)
摘要:题目: 解答: 如果是括号的左半边,直接入栈即可; 如果是括号的右半边,需要与栈最上面的括号匹配,匹配失败直接返回false; for循环遍历结束后,判断栈是否为空,为空则表示所有的括号都已经匹配成功了。 1 class Solution { 2 public: 3 bool isValid(str 阅读全文
posted @ 2020-05-03 17:22 梦醒潇湘 阅读(171) 评论(0) 推荐(0)
摘要:题目: 解答: 方法一: 首先找出最短字符串,然后一个一个匹配。 具体代码如下: 1 class Solution 2 { 3 public: 4 string longestCommonPrefix(vector<string> &strs) 5 { 6 if(strs.size() == 0) 阅读全文
posted @ 2020-05-03 17:19 梦醒潇湘 阅读(292) 评论(0) 推荐(0)
摘要:题目: 解答: 代码行数:解析(1)构建一个字典记录所有罗马数字子串,注意长度为2的子串记录的值是(实际值 - 子串内左边罗马数字代表的数值); (2)这样一来,遍历整个 s的时候判断当前位置和前一个位置的两个字符组成的字符串是否在字典内,如果在就记录值,不在就说明当前位置不存在小数字在前面的情况, 阅读全文
posted @ 2020-05-03 17:15 梦醒潇湘 阅读(265) 评论(0) 推荐(0)
摘要:题目: 解答: 方法一:暴力破解法 方法二:O(n^2)的算法 如果我们换一种思路,我们从里向外来判断。也就是我们先判断子字符串A是不是对称的。如果A不是对称的,那么向该子字符串两端各延长一个字符得到的字符串肯定不是对称的。如果A对称,那么我们只需要判断A两端延长的一个字符是不是相等的,如果相等,则 阅读全文
posted @ 2020-05-03 17:09 梦醒潇湘 阅读(218) 评论(0) 推荐(0)
摘要:题目: 解答: 怎么确认一个字符是否已经存在于子串中呢?策略是用一个表存储已经出现过的字符。 请向面试官沟通交流:给定的字符串除了'a' - 'z'外,是否还有其他字符,比如Digits、Upper case letter。是否只是包含ASCII码?或者Unicode字符集合? 实现一: 1 cla 阅读全文
posted @ 2020-05-03 16:50 梦醒潇湘 阅读(173) 评论(0) 推荐(0)