
字符串(String)
朱师傅哈
这个作者很懒,什么都没留下…
展开
-
20. 有效的括号(Valid Parentheses)
20. 有效的括号(Valid Parentheses)题解栈复杂度分析PythonJava(待完成)题解有效的括号问题,一般使用栈来解决,若出现一个右括号,判断栈顶的是否为相匹配的左括号,是则出栈,否则入栈。遇到左括号就入栈。显然,有效的括号一定保证最终栈为空,若出现一个右括号,栈已空,则一定无效。栈初始化括号对应关系dict={")":"(","}":"{","]":"["}dic...原创 2019-12-27 13:49:36 · 332 阅读 · 1 评论 -
17. 电话号码的字母组合(Letter Combinations of a Phone Number)
17. 电话号码的字母组合(Letter Combinations of a Phone Number)题解回溯复杂度分析PythonJava(待完成)题解第一时间想到回溯,因为这种找全部的解,常规都是使用回溯回溯初始化词典phone={"2":["a","b","c"],⋯ }phone=\{"2":["a","b","c"],\cdots\}phone={"2":["a","b",...原创 2019-12-26 23:25:15 · 287 阅读 · 0 评论 -
14. 最长公共前缀(Longest Common Prefix)
14. 最长公共前缀(Longest Common Prefix)题解水平扫描复杂度分析PythonJava(待完成)Pythonic的解法复杂度分析PythonJava(待完成)题解水平扫描想法:取字符串数组中的第一个字符串为resresres,逐个和剩下的字符串比较并更新resresres特判,若字符串数组为空,返回"""""",或只有一个字符串,返回strs[0]strs[0]...原创 2019-12-26 22:27:15 · 153 阅读 · 0 评论 -
13. 罗马数字转整数(Roman to Integer)
13. 罗马数字转整数(Roman to Integer)题解一次遍历复杂度分析PythonJava(待完成)题解借助哈希表保存所有的罗马字符,包括’I’:1, ‘IV’:4, ‘V’:5, ‘IX’:9, ‘X’:10, ‘XL’:40, ‘L’:50, ‘XC’:90, ‘C’:100, ‘CD’:400, ‘D’:500, ‘CM’:900, ‘M’:1000。一次遍历初始化词典...原创 2019-12-26 21:42:14 · 298 阅读 · 0 评论 -
6. Z 字形变换(ZigZag Conversion)
6. Z 字形变换(ZigZag Conversion)题解标志转向复杂度分析PythonJava(待完成)题解标志转向特判,若行数numRows<2numRows<2numRows<2,返回sss初试化res=["",⋯ ,""]res=["",\cdots,""]res=["",⋯,""],长度为numRowsnumRowsnumRows,res[i]res[...原创 2019-12-25 22:10:52 · 336 阅读 · 0 评论 -
3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)
3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)题解滑动窗口复杂度分析PythonJava(待完成)题解滑动窗口初始化集合memomemomemo保存当前无重复字符的子串初始化结果max_len=0max\_len=0max_len=0和当前子串的长度cur_len=0cur\_len=0cur_len=0,...原创 2019-12-25 20:29:05 · 146 阅读 · 0 评论 -
139. 单词拆分(Word Break)
139. 单词拆分(Word Break)题解动态规划复杂度分析PythonJava(待完成)记忆化回溯复杂度分析PythonJava(待完成)题解动态规划初始化dp=[False,⋯ ,False]dp=[False,\cdots,False]dp=[False,⋯,False],长度为n+1n+1n+1。nnn为字符串长度。dp[i]dp[i]dp[i]表示sss的前iii位是否可...原创 2019-12-06 14:39:42 · 233 阅读 · 0 评论 -
115. 不同的子序列(Distinct Subsequences)
115. 不同的子序列(Distinct Subsequences)题解动态规划复杂度分析PythonJava(待完成)题解动态规划我们使用dp[i][j]dp[i][j]dp[i][j]表示SSS的前jjj个字符有几种方式构成TTT的前iii个字符。在SSS和TTT前插入空字符,便于计算。易知,初始化dpdpdp数组第一行全为111,第一列除首位全为000。dp[0][j]dp[0][...原创 2019-11-29 15:04:32 · 199 阅读 · 1 评论 -
97. 交错字符串(Interleaving String)
97. 交错字符串(Interleaving String)题解动态规划复杂度分析PythonJava(待完成)题解动态规划我们使用dp[i][j]dp[i][j]dp[i][j]表示s1s_{1}s1的前iii个字符和s2s_{2}s2的前jjj个字符是否能构成s3s_{3}s3的前i+ji+ji+j个字符。首先,dp[0][0]dp[0][0]dp[0][0]一定是TrueTr...原创 2019-11-28 22:22:31 · 253 阅读 · 0 评论 -
91. 解码方法(Decode Ways)
91. 解码方法(Decode Ways)题解动态规划复杂度分析PythonJava(待完成)空间优化复杂度分析PythonJava(待完成)题解注意这几种情况,是无法解码的:以0开头,如:“0123”,“000”0前的数字大于2,如:“215021”。0前数字小于等于2时,是可以解码的,如:“20105”。动态规划所以,算法设计如下:特判,若sss为空或者s[0]=="0"...原创 2019-11-27 20:04:15 · 276 阅读 · 0 评论 -
72. 编辑距离(Edit Distance)
72. 编辑距离(Edit Distance)题解动态规划复杂度分析PythonJava(待完成)题解动态规划初试化dpdpdp,为(n1+1)∗(n2+1)(n1+1)*(n2+1)(n1+1)∗(n2+1)的全零矩阵,n1n1n1为word1word1word1的长度,n1n1n1为word2word2word2的长度初始化第一行和第一列,如图所示:""""""表示空字符,...原创 2019-11-25 10:38:39 · 169 阅读 · 0 评论 -
32. 最长有效括号(Longest Valid Parentheses)
32. 最长有效括号(Longest Valid Parentheses)题解栈+排序复杂度分析PythonJava(待完成)栈 优化(不排序)复杂度分析PythonJava(待完成)动态规划复杂度分析PythonJava(待完成)题解栈+排序括号匹配,第一时间想到用栈进行匹配,保存下可以匹配的索引下标。然后将匹配索引排序,找到最长连续子序列。初试化栈stack=[]stack=[]s...原创 2019-11-24 21:09:30 · 155 阅读 · 0 评论 -
10. 正则表达式匹配(Regular Expression Matching)
10. 正则表达式匹配(Regular Expression Matching)题解递归复杂度分析PythonJava(待完成)动态规划法复杂度分析PythonJava(待完成)题解递归递归函数isMatch(s,p)isMatch(s,p)isMatch(s,p),sss表示待匹配字符,ppp表示字符规律若ppp为空,此时返回sss是否为空。表示若字符规律已经为空,若sss还不为空,此...原创 2019-11-23 22:06:18 · 450 阅读 · 0 评论 -
5. 最长回文子串(Longest Palindromic Substring)
5. 最长回文子串(Longest Palindromic Substring)题解动态规划复杂度分析PythonJava(待完成)中心拓展法复杂度分析PythonJava(待完成)题解动态规划特判,当sss的长度为111或者000时,返回sss。初试化最长回文子串的开始索引startstartstart和最长长度max_len=1max\_len=1max_len=1初试化...原创 2019-11-21 20:02:04 · 117 阅读 · 0 评论