Leetcode
希望能够有时间每天刷刷题
life is learning
这个作者很懒,什么都没留下…
展开
-
无重复字符的最长子串
无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子原创 2020-09-15 15:02:24 · 112 阅读 · 0 评论 -
字符串相加
分析给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。代码先将字符串对齐,然后从末位开始相加,注意首位进1的情况。 string addStrings(string num1, string num2) { int s1 = num1.size(); int s2 = num2.size(); //将num1和num2...原创 2020-03-31 22:17:42 · 272 阅读 · 0 评论 -
字符串中的第一个唯一字符(查找字符串中第一个不重复的字符)
分析利用数组或者map容器建立一个映射关系,数组内存放每个字符的个数,然后依顺序查找第一个个数为1的字符。代码返回第一个唯一字符位置同理。char firstUniqChar(string s) { //int hash[52] = { 0 }; //字符串含有大写字母 int hash[26] = { 0 }; //字符串只有小写字母 ...原创 2020-03-31 22:15:11 · 558 阅读 · 0 评论 -
赎金信
分析给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。)代码第一种 bool canConstruct(string ransomNot...原创 2020-03-27 21:29:46 · 126 阅读 · 0 评论 -
反转字符串中的元音字母
分析编写一个函数,以字符串作为输入,反转该字符串中的元音字母。代码前后一起查找,找到元音字母就交换。 bool isVowel(char c) { if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'A' || c == 'E' || c == 'I' || c == 'O...原创 2020-03-27 20:46:07 · 265 阅读 · 0 评论 -
判断回文串
分析回文串,从前往后读和从后往前读是一样的,例如“abcba”。本文只考虑字母和数字字符,忽略字母的大小写,将空字符串定义为有效的回文串。代码一开始我的思路是将字符串遍历,去除空格等只留下字符和数字,然后利用reverse函数判断。这种方法不管是不是回文串都要把字符串遍历一遍,耗时太久。 bool isPalindrome(string s) { stri...原创 2020-03-27 20:41:02 · 941 阅读 · 0 评论 -
两个二进制数字求和
分析给定两个二进制字符串,返回他们的和(用二进制表示)。第一反应是先把二进制字符串转化为十进制,然后计算他们的和,再把他们的和转为二进制。 //二进制转十进制 int BinaryToDecimal(string s) { int num = 0; for (int i = 0; i < s.size(); ++i) {...原创 2020-03-27 00:39:57 · 2218 阅读 · 0 评论 -
返回一句话的最后一个单词
分析返回一句话的最后一个单词:例如“What is your name”,最后一个单词就是"name"。代码一整句话是一个字符串,以“ ”空格作为分隔符,利用rfind函数从后往前查找。但是要注意字符串最后是空格的情况(“Who are you ”)。我们先看下如何返回最后一个单词个数。 int lengthOfLastWord(string s) { int o...原创 2020-03-27 00:24:07 · 291 阅读 · 0 评论 -
外观数列
「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1. 12. 113. 214. 12115. 111221第一行的读音为1个1,所以多2行就是11;第二行的读音为2个1,所以第3行就是21;第三行的读音是1个2、1个1,所以第4行就是1211;第四行的读音是1个1、1个2、2个1,所以第5行就...原创 2020-03-26 22:17:13 · 602 阅读 · 0 评论 -
有效的括号(判断括号使用正确性)
如何判断括号使用正确?以 {[()][]} 为例,我们从内向外分析。() 是成对使用的,我们取出后为 {[][]} ,然后依次为 {[]} 、 {} ,可以判断是有效的括号,即括号使用正确。代码逻辑左括号进栈,右括号判断是否与栈顶元素成对使用。 bool isValid(string s) { if (s.size() % 2 != 0) re...原创 2020-03-26 22:04:46 · 1438 阅读 · 0 评论 -
查找字符串数组(多个字符串)的最长公共前缀
代码逻辑首先对字符串容器做排序处理,然后取出首尾两个字符串的最长公共前缀 //查找两个字符串的最长公共前缀 string CommonTwoStr(const string& str1, const string& str2) { string tmp = ""; int i = 0; int minSize = min...原创 2020-03-26 21:46:29 · 1614 阅读 · 0 评论 -
罗马数字转整数
代码逻辑getCharValue()函数相当于创建一个映射关系,也可以用用容器代替。用lastNum 记录前一位罗马数字与当前罗马数字比较,并进行更新。int getCharValue(const char& c) { switch (c) { case 'I': return 1; case '...原创 2020-03-26 21:41:34 · 71 阅读 · 0 评论