随笔分类 -  AL_String

摘要:Count and Say 计数和发言 思路:首先要理解题意,可以发现后者是在前者的基础之上进行的操作,所以我们拿之前的结果作为现在函数的参数循环n-1次即可,接下来就是统计字符串中相应字符的个数,需要注意的是最后一个字符别忘了处理。 class Solution(object): def coun 阅读全文
posted @ 2017-09-19 09:32 banananana 阅读(258) 评论(0) 推荐(0) 编辑
摘要:392. Is Subsequence 这道题目可以使用很多种解法,包括是动态规划等等。 动态规划 s为匹配字符串,t为给定字符串假设dp[i][j]表示t从开始到第i个字符时对应s从开头到第j个字符,s所否是t的子序列。 分析:在比较的过程中,如果t[i]不等于s[j],则忽略掉当前的字符,取之前 阅读全文
posted @ 2017-08-30 12:09 banananana 阅读(203) 评论(0) 推荐(0) 编辑
摘要:115. Distinct Subsequences 动态规划 思路:假定dp[i][j] 表示字符串S[0,i]能够匹配字符串T[0,j]的个数。如果当前下标对应的值不相等,那么我们可以将当前的字符进行抛弃,取前一位的匹配的结果;相反,如果值是相等的,那么我们可以选择保留当前字符或者不保留,因为这 阅读全文
posted @ 2017-08-26 03:57 banananana 阅读(145) 评论(0) 推荐(0) 编辑
摘要:76. Minimum Window Substring 题目:计算最小区间的子字符串 滑动窗口 思路:纪录移动过程中的左边和右边窗口,并且维护最小的左边和右边窗口值,通过使用次数来判断是否要移动窗口,比如,当前ABC对应的剩余使用次数都为0,如果再次碰见A的时候,在减去1后发现它已经为-1,那么就 阅读全文
posted @ 2017-08-26 01:54 banananana 阅读(120) 评论(0) 推荐(0) 编辑
摘要:22. Generate Parentheses 题意:给定括号个数,生成相互对应的括号组合。 回溯 纪录两边的括号的个数,注意每当右边括号数目和左边数目不再相等的时候,那么需要进行补齐右边的括号。 增加的形式: class Solution(object): def generateParenth 阅读全文
posted @ 2017-08-25 06:18 banananana 阅读(94) 评论(0) 推荐(0) 编辑
摘要:3. Longest Substring Without Repeating Characters 题意:计算字符串中最长不重复子串的长度。 思路:一开始的想法是利用dp来做,也确实可以做到,但是它的做法需要两层循环,外层遍历处理dp,内层遍历处理该位置的子字符串中的长度最大值,然后获取到子字符串后 阅读全文
posted @ 2017-08-24 23:26 banananana 阅读(114) 评论(0) 推荐(0) 编辑
摘要:6. ZigZag Conversion 题意:按照Z的顺序排放字符串,接着按照行进行输出。 思路:一开始的思路是利用数组的step去输出,但是即便计算出中间的,还要把中间的结果插入到之前的结果中,显然太麻烦了。 利用一个下标在第0层和第row-1层之间进行来回移动,添加字符串中的字符,最后将每一行 阅读全文
posted @ 2017-08-24 03:35 banananana 阅读(134) 评论(0) 推荐(0) 编辑
摘要:647. Palindromic Substrings 题意:判断一个字符串中存在的最大回文个数。 这里需要考虑到各种子字符串,所以我用了两个循环,外层处理动态规划,内层处理到当前的子串。 class Solution(object): def countSubstrings(self, s): " 阅读全文
posted @ 2017-08-24 02:49 banananana 阅读(134) 评论(0) 推荐(0) 编辑
摘要:125. Valid Palindrome 只要字母和数字,再判断是否是回文即可。 class Solution(object): def isPalindrome(self, s): """ :type s: str :rtype: bool """ if not s: return True s 阅读全文
posted @ 2017-08-24 01:36 banananana 阅读(75) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示