 # Subsequence - 187. Repeated DNA Sequences

187. Repeated DNA Sequences All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: “ACGAATTCCG”. When studying DNA, it is sometimes useful to identify repeated sequences within the DNA. Write a function to find all the 10-letter-long sequences (substrings) that occur more than once in a DNA molecule. 思路： 题目意思是找出重复的序列，采用滑动窗口和hashset不可以重复的特性来做。 代码： java： class Solution { public List<String> findRepeatedDnaSequences(String s) { Set curr = new HashSet.... # Subsequence - 392. Is Subsequence

Is Subsequence Given a string s and a string t, check if s is subsequence of t. You may assume that there is only lower case English letters in both s and t. t is potentially a very long (length ~= 500,000) string, and sis a short string (<=100). A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remainin.... # parentheses - 241. Different Ways to Add Parentheses

Different Ways to Add Parentheses Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are +, - and *. Example 1: Input: “2-1-1” Output: [0, 2] Explanation: ((2-1)-1) = 0 (2-(1-1)) = 2 Example 2: Input: "2*3-4*5" Output: [-34, -14, -10, -10, 10] Explanation: (2*(3-(4*5))) = -34 ((2*3)-(4*5)) = -14 ((2*(3-4))*5) = -10 (2*((3-4)*5)) = -10 (((2*3)-4)*5) = 10 思路：.... # parentheses - 32. Longest Valid Parentheses

Longest Valid Parentheses Given a string containing just the characters '(' and ')', find the length of the longest valid (well-formed) parentheses substring. Example 1: Input: “(()” Output: 2 Explanation: The longest valid parentheses substring is “()” Example 2: Input: “)()())” Output: 4 Explanation: The longest valid parentheses substring is “()()” 思路： 括号问题常规解法都是使用栈。 代码： java： class Solution { public int longestValidParentheses(String s) { Stack<Integer> stack = ne.... # parentheses - 22. Generate Parentheses

22. Generate Parentheses Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. For example, given n = 3, a solution set is: [ “((()))”, “(()())”, “(())()”, “()(())”, “()()()” ] 思路： 题目意思是给一个整形数字，返回合法左右括号这种组合的所有组合，典型的使用回溯法来做。 代码： java： class Solution { public List<String> generateParenthesis(int n) { List<String> res = new ArrayList<String>(); backtrack(res, "", 0, 0, n); return res; } private void ba.... # Parentheses - 20. Valid Parentheses

20. Valid Parentheses Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. An input string is valid if: Open brackets must be closed by the same type of brackets. Open brackets must be closed in the correct order. Note that an empty string is also considered valid. Example 1: Input: “()” Output: true 思路： 使用栈来做，遇到左括号入栈，遇到右括号出栈，如果不匹配就不合法。 代码： java： class Solution { /*public boolean .... # palindrome - 132. Palindrome Partitioning II

132. Palindrome Partitioning II Given a string s, partition s such that every substring of the partition is a palindrome. Return the minimum cuts needed for a palindrome partitioning of s. Example: Input: “aab” Output: 1 Explanation: The palindrome partitioning [“aa”,“b”] could be produced using 1 cut. 思路： 这一题和131题的条件增加了只要找出切割字符串最少的一种分割方法。用dp来做，状态转移方程就是i到j是否是文字符串。 代码： java： class Solution { public int minCut(String s) { char[] c = s.toCharArray(); int n = c.leng.... # palindrome - 131. Palindrome Partitioning

131. Palindrome Partitioning Given a string s, partition s such that every substring of the partition is a palindrome. Return all possible palindrome partitioning of s. Example: Input: “aab” Output: [ [“aa”,“b”], [“a”,“a”,“b”] ] 思路： 题目意思是找出字符串中子串是回文字符串的所有组合，使用回溯来做。 代码： java： public class Solution { List<List<String>> resultLst; ArrayList<String> currLst; public List<List<String>> partition(String s) { resultLst = new ArrayList<Li.... # Palindrome - 9. Palindrome Number

Palindrome Number Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward. Example 1: Input: 121 Output: true Example 2: Input: -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome. Example 3: Input: 10 Output: false Explanation: Reads 01 from right to left. Therefore it is not a palindrome. Follow up: Coud you solve it wi.... # Palindrome - 5. Longest Palindromic Substring

Longest Palindromic Substring Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example 1: Input: “babad” Output: “bab” Note: “aba” is also a valid answer. Example 2: Input: “cbbd” Output: “bb” 思路： 找出字符串中的回文字符串，解法有很多，比如dp，这里采用中容易想到的中心扩散法。主要区分一下偶回文和奇回文的处理，时间复杂度O(n^2)，空间复杂度O(1) 代码： java： class Solution { public String longestPalindrome(String s) { if (s == null || s.length() == 0) return ""; int start = 0,.... # Palindrome - 125. Valid Palindrome

Valid Palindrome Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases. Note: For the purpose of this problem, we define empty string as valid palindrome. Example 1: Input: “A man, a plan, a canal: Panama” Output: true Example 2: Input: “race a car” Output: false 思路： 题目意思是说给定一个字符串，只看字母和数字是否是回文字符串，使用two pointer来做，寻找首尾位置的字母或者数字，进行比对。 代码： java： class Solution { public boolean isPalindrome(String s) { if (s == null || s.length() == 0.... # Sliding Window - 395. Longest Substring with At Least K Repeating Characters

395. Longest Substring with At Least K Repeating Characters Find the length of the longest substring T of a given string (consists of lowercase letters only) such that every character in T appears no less than k times. Example 1: Input: s = "aaabb", k = 3 Output: 3 The longest substring is "aaa", as 'a' is repeated 3 times. Example 2: Input: s = "ababbc", k = 2 Output: 5 The longest substring is "ababb", as 'a' is repeated 2 times and 'b' is repeated 3 times. .... # Sliding Window - 340. Longest Substring with At Most K Distinct Characters

Longest Substring with At Most K Distinct Characters Given a string S, find the length of the longest substring T that contains at most k distinct characters. Example 1: Input: S = “eceba” and k = 3 Output: 4 Explanation: T = “eceb” Example 2: Input: S = “WORLD” and k = 4 Output: 4 Explanation: T = “WORL” or “ORLD” 思路： 题目意思是说给定一个k，找出一个连续子串，子串里面最多只允许出现k个不同的字符。所以，使用两个指针来限定窗口大小，当超过k个不同的字符的时候，就调整窗口大小，而调整窗口的时候，需要用字符出现的频率来区分去除的字符是重复的还是不重复的。 代码： java： public class Solution { /** *.... # Sliding Window - 3. Longest Substring Without Repeating Characters

3. Longest Substring Without Repeating Characters Given a string, find the length of the longest substring without repeating characters. Example 1: Input: “abcabcbb” Output: 3 Explanation: The answer is “abc”, with the length of 3. Example 2: Input: “bbbbb” Output: 1 Explanation: The answer is “b”, with the length of 1. Example 3: Input: “pwwkew” Output: 3 Explanation: The answer is “wke”, with the length of 3. Note that the answer must be a substring, “pwke” is a subsequence.... # Sliding Window - 76. Minimum Window Substring

76. Minimum Window Substring Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n). Example: Input: S = “ADOBECODEBANC”, T = “ABC” Output: “BANC” Note: If there is no such window in S that covers all characters in T, return the empty string "". If there is such window, you are guaranteed that there will always be only one unique minimum window in S. 思路： 这是一道经典的sliding window的题目，题目意思是给定两个字符串，字符串S如果包含另一个字符串T的所有字符，.... # Sliding Window - 30. Substring with Concatenation of All Words

30. Substring with Concatenation of All Words You are given a string, s, and a list of words, words, that are all of the same length. Find all starting indices of substring(s) in s that is a concatenation of each word in words exactly once and without any intervening characters. Example 1: Input: s = “barfoothefoobarman”, words = [“foo”,“bar”] Output: [0,9] Explanation: Substrings starting at index 0 and 9 are “barfoor” and “foobar” respectively. The output or.... # GET和POST的区别 # String - 68. Text Justification

68. Text Justification Given an array of words and a width maxWidth, format the text such that each line has exactly maxWidth characters and is fully (left and right) justified. You should pack your words in a greedy approach; that is, pack as many words as you can in each line. Pad extra spaces ' ' when necessary so that each line has exactly maxWidth characters. Extra spaces between words should be distributed as evenly as possible. If the number of spac.... # String - 273. Integer to English Words

273. Integer to English Words Convert a non-negative integer to its english words representation. Given input is guaranteed to be less than 231 - 1. Example 1: Input: 123 Output: “One Hundred Twenty Three” Example 2: Input: 12345 Output: “Twelve Thousand Three Hundred Forty Five” 思路： 把数字按照英文输出，这和有一题读阿拉伯数字是类似的，就是一个实现题，思想就是把"Thousand", "Million", "Billion"作为单位，分段计算每一段应该读做多少，然后加上这个单位就可以。 代码： java： class Solution { private static final String[] LESS_THAN_20 = {"", "One", "Two", "Thre.... # String - 12. Integer to Roman

12. Integer to Roman Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. **Symbol** **Value** I 1 V 5 X 10 L 50 C 100 D 500 M 1000 For example, two is written as II in Roman numeral, just two one’s added together. Twelve is written as, XII, which is simply X + II. The number twenty seven is written as XXVII, which is XX + V + II. Roman numerals are usually....

Nothing just happens, it's all part of a plan.