日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【LeetCode】字符串 string(共112题)

發布時間:2025/5/22 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【LeetCode】字符串 string(共112题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【3】Longest Substring Without Repeating Characters?(2019年1月22日,復習)

【5】Longest Palindromic Substring?(2019年1月22日,復習)

【6】ZigZag Conversion?(2019年1月22日,復習)

【8】String to Integer (atoi)?(2019年1月22日,復習)

【10】Regular Expression Matching?(2019年1月22日,復習)

?

【12】Integer to Roman?(2019年1月22日,復習)

?

【13】Roman to Integer?(2019年1月22日,復習)

羅馬數字轉換成整數。

題解:用一個map來存儲映射關系。

1 class Solution { 2 public: 3 int romanToInt(string s) { 4 const int n = s.size(); 5 initMap(); 6 int idx = 0; 7 int ret = 0; 8 while (idx < n) { 9 if (idx + 1 == n) { 10 string temp = string(1, s[idx]); 11 ret += mp[temp]; 12 idx++; 13 continue; 14 } 15 string str = s.substr(idx, 2); 16 if (mp.find(str) != mp.end()) { 17 ret += mp[str]; 18 idx += 2; 19 } else { 20 string temp = string(1, s[idx]); 21 ret += mp[temp]; 22 idx++; 23 } 24 } 25 return ret; 26 } 27 unordered_map<string, int> mp; 28 void initMap() { 29 mp["IV"] = 4, mp["IX"] = 9; 30 mp["XL"] = 40, mp["XC"] = 90; 31 mp["CD"] = 400, mp["CM"] = 900; 32 mp["I"] = 1, mp["V"] = 5, mp["X"] = 10, 33 mp["L"] = 50, mp["C"] = 100, mp["D"] = 500, 34 mp["M"] = 1000; 35 } 36 }; View Code

?

【14】Longest Common Prefix?(2019年1月22日,復習)

給了一組單詞,由小寫字母構成,找他們的公共前綴,返回這個字符串。

題解:可以暴力解,可以trie樹。?

1 class Solution { 2 public: 3 string longestCommonPrefix(vector<string>& strs) { 4 if(strs.empty()) return ""; 5 for(int i=0; i<strs[0].size(); ++i){ 6 for(int j=1; j<strs.size(); ++j){ 7 if(strs[0][i] != strs[j][i]){ 8 return strs[0].substr(0,i); 9 } 10 } 11 } 12 return strs[0]; 13 } 14 }; View Code 1 class Solution { 2 public: 3 struct TrieNode { 4 char c; 5 vector<TrieNode*> children; 6 bool isEndingChar = false; 7 int cntChildrenNotNull = 0; 8 TrieNode(char t): c(t) { 9 children = vector<TrieNode*>(26, nullptr); 10 } 11 }; 12 class Trie { 13 public: 14 void insert(string s) { 15 TrieNode * node = root; 16 for (int i = 0; i < s.size(); ++i) { 17 char c = s[i]; 18 if (node->children[c-'a'] == nullptr) { 19 node->children[c-'a'] = new TrieNode(c); 20 node->cntChildrenNotNull++; 21 } 22 node = node->children[c-'a']; 23 } 24 node->isEndingChar = true; 25 return; 26 } 27 string getCommonPrefix() { 28 TrieNode* node = root; 29 string ret = ""; 30 while (node->cntChildrenNotNull == 1 && node->isEndingChar == false) { 31 for (int i = 0; i < 26; ++i) { 32 if (node->children[i]) { 33 node = node->children[i]; 34 break; 35 } 36 } 37 ret += string(1, node->c); 38 } 39 return ret; 40 } 41 TrieNode* root = new TrieNode('/'); 42 }; 43 string longestCommonPrefix(vector<string>& strs) { 44 const int n = strs.size(); 45 Trie trie; 46 for (auto s : strs) { 47 if (s.empty()) { 48 return s; 49 } 50 trie.insert(s); 51 } 52 return trie.getCommonPrefix(); 53 } 54 }; View Code

?

【17】Letter Combinations of a Phone Number?(2019年1月22日,復習)

給了一個座機電話, 給了一個數字的字符串 digits,返回所有的數字對應的字母排列。

題解:map + dfs

1 class Solution { 2 public: 3 vector<string> letterCombinations(string digits) { 4 n = digits.size(); 5 if (n == 0) { return vector<string>{}; } 6 initMap(); 7 string s = ""; 8 dfs(digits, 0, s); 9 return ret; 10 } 11 int n; 12 unordered_map<int, vector<string>> mp; 13 vector<string> ret; 14 void dfs(string digits, int cur, string& s) { 15 if (cur == n) { 16 ret.push_back(s); 17 return; 18 } 19 int num = digits[cur] - '0'; 20 for (auto ele : mp[num]) { 21 string ori = s; 22 s += ele; 23 dfs(digits, cur + 1, s); 24 s = ori; 25 } 26 return; 27 } 28 void initMap() { 29 mp[2] = {"a", "b", "c"}; 30 mp[3] = {"d", "e", "f"}; 31 mp[4] = {"g", "h", "i"}; 32 mp[5] = {"j", "k", "l"}; 33 mp[6] = {"m", "n", "o"}; 34 mp[7] = {"p", "q", "r", "s"}; 35 mp[8] = {"t", "u", "v"}; 36 mp[9] = {"w", "x", "y", "z"}; 37 } 38 }; View Code

?

【20】Valid Parentheses?(2019年1月22日,復習)

Given a string containing just the characters?'(',?')',?'{',?'}',?'['?and?']', determine if the input string is valid. 判斷一個字符串中的括號是不是合法的。

題解:用棧做。

代碼不貼了。

【22】Generate Parentheses?(2019年1月22日,復習)

?

【28】Implement strStr()? (算法群,2018年11月4日,練習kmp)

實現在字符串 s 中找到 模式串 p, (kmp)

題解:暴力O(N*M) 可以解, kmp O(N+M) 也可以解 ,kmp務必再深入理解一下 next 數組的求法。不然面試不給筆記看就涼涼了。(還有一個注意點是 p 為空串的時候要特判)

1 class Solution { 2 public: 3 int strStr(string haystack, string needle) { 4 return kmp(haystack, needle); 5 } 6 int kmp(string& s, string& p) { 7 const int n = s.size(), m = p.size(); 8 if (m == 0) {return 0;} //p empty 9 vector<int> next = getNext(p); 10 int i = 0, j = 0; 11 while (i < n && j < m) { 12 if (j == -1 || s[i] == p[j]) { 13 ++i, ++j; 14 } else { 15 j = next[j]; 16 } 17 } 18 if (j == m) { 19 return i - j; 20 } 21 return -1; 22 } 23 vector<int> getNext(string& p) { 24 const int n = p.size(); 25 vector<int> next(n, 0); 26 next[0] = -1; 27 int j = 0, k = -1; 28 while (j < n - 1) { 29 if (k == -1 || p[j] == p[k]) { 30 ++k, ++j; 31 next[j] = p[j] == p[k] ? next[k] : k; 32 } else { 33 k = next[k]; 34 } 35 } 36 return next; 37 } 38 }; kmp 1 //暴力解法 O(N*M) 2 class Solution { 3 public: 4 int strStr(string haystack, string needle) { 5 const int n = haystack.size(), m = needle.size(); 6 if (m == 0) {return 0;} 7 for (int i = 0; i + m <= n; ) { // 判斷條件要不要取等號,然后下面做了++i, ++j, for循環里面就別做了,尷尬,這都能錯 8 int j; int oldi = i; 9 for (j = 0; j < m;) { 10 if (haystack[i] == needle[j]) { 11 ++i, ++j; 12 } else { 13 break; 14 } 15 } 16 if (j == m) { 17 return i - j; 18 } else { 19 i = oldi + 1; 20 } 21 } 22 return -1; 23 } 24 }; 暴力

?

【30】Substring with Concatenation of All Words?

【32】Longest Valid Parentheses?

【38】Count and Say?

?

【43】Multiply Strings?(2018年11月27日,高精度乘法) (2019年3月5日更新)

給了兩個string類型的數字,num1 和 num2, 用string的形式返回 num1 * num2。(num1, num2 的長度都小于等于110)

題解:我們可以不做翻轉的操作,從 num1 和 num2 的末尾開始計算,num1[i], num2[j]? 的乘積要放在 nums[i+j+1] 的位置,進位放在 nums[i+j] 的位置。返回結果的字符串的長度肯定是 nums1.size() + nums2.size() 的長度。

1 class Solution { 2 public: 3 string multiply(string num1, string num2) { 4 const int size1 = num1.size(), size2 = num2.size(); 5 vector<int> nums(size1 + size2, 0); 6 for (int i = size1 - 1; i >= 0; --i) { 7 for (int j = size2 - 1; j >= 0; --j) { 8 int temp = (num1[i] - '0') * (num2[j] - '0') + (nums[i+j+1]); 9 nums[i+j+1] = temp % 10; 10 nums[i+j] += temp / 10 ; 11 } 12 } 13 string res = ""; 14 for (auto num : nums) { 15 if (num == 0 && res.empty()) { 16 continue; 17 } 18 res += num + '0'; 19 } 20 if (res.empty()) { res = "0"; } 21 return res; 22 } 23 }; View Code

?

【44】Wildcard Matching?

?

【49】Group Anagrams?(2019年1月23日,谷歌tag復習)

給了一個單詞列表,給所有的異構詞分組。

Input: ["eat", "tea", "tan", "ate", "nat", "bat"],

Output:

[

["ate","eat","tea"],

["nat","tan"],

["bat"]

]?

題解:我的解法,hashmap + sort。不是最優秀的解法。還有什么用 26個素數代替法,這個更快吧。

代碼不貼了。

?

【58】Length of Last Word?

【65】Valid Number?

【67】Add Binary?

【68】Text Justification?

【71】Simplify Path?

【72】Edit Distance?

【76】Minimum Window Substring?

【87】Scramble String?

【91】Decode Ways?

【93】Restore IP Addresses?

【97】Interleaving String?

【115】Distinct Subsequences?

【125】Valid Palindrome?

【126】Word Ladder II?

【151】Reverse Words in a String?(2018年11月8日, 原地翻轉字符串)

?Input: "the sky is blue",

Output:?"blue is sky the".

題解:用stringstream能做。?

1 class Solution { 2 public: 3 void reverseWords(string &s) { 4 stringstream iss(s); 5 string temp; 6 iss >> s; 7 while (iss >> temp) { 8 s = temp + " " + s; 9 } 10 if (isspace(s[0])) {s = "";} 11 return; 12 } 13 };

?

【157】Read N Characters Given Read4?

【158】Read N Characters Given Read4 II - Call multiple times?

?

【159】Longest Substring with At Most Two Distinct Characters?(2019年1月29日,谷歌tag復習)

給定一個字符串 s,返回它最長的子串的長度,子串要求只能有兩個distinct characters。

題解:sliding window。(time complexity is O(N))?

1 class Solution { 2 public: 3 int lengthOfLongestSubstringTwoDistinct(string s) { 4 const int n = s.size(); 5 int ans = 0; 6 int begin = 0, end = 0, cnt = 0; 7 unordered_map<char, int> mp; 8 while (end < n) { 9 mp[s[end]]++; 10 if (mp[s[end]] == 1) { 11 ++cnt; 12 } 13 if (cnt <= 2) { 14 ans = max(ans, end - begin + 1); 15 } 16 while (cnt > 2) { 17 mp[s[begin]]--; 18 if (mp[s[begin]] == 0) { 19 --cnt; 20 } 21 ++begin; 22 } 23 end++; 24 } 25 return ans; 26 } 27 }; View Code

??

【161】One Edit Distance?(2018年11月24日,刷題數)

給了兩個字符串 s 和 t,問 s 能不能通過 增加一個字符, 刪除一個字符,替換一個字符 這三種操作里面的任意一個變成 t。能的話返回 true, 不能的話返回 false。

題解:感覺是基礎版的編輯距離。直接通過模擬來做。beats 36%。時間復雜度是 O(N).

1 class Solution { 2 public: 3 bool isOneEditDistance(string s, string t) { 4 if (s == t) {return false;} 5 const int ssize = s.size(), tsize = t.size(); 6 int cnt = 0; 7 if (ssize == tsize) { //check replace; 8 int idx = findfirstidx(s, t); 9 if (idx == ssize || s.substr(idx+1) == t.substr(idx+1)) { 10 return true; 11 } 12 } else if (ssize == tsize - 1) { //check insert 13 int idx = findfirstidx(s, t); 14 if (idx == tsize || s.substr(idx) == t.substr(idx+1)) { 15 return true; 16 } 17 18 } else if (ssize == tsize + 1){ //check delete 19 int idx = findfirstidx(s, t); 20 if (idx == ssize || s.substr(idx+1) == t.substr(idx)) { 21 return true; 22 } 23 } 24 return false; 25 } 26 inline int findfirstidx (string s, string t) { 27 const int ssize = s.size(), tsize = t.size(); 28 int tot = min(ssize, tsize); 29 for (int i = 0; i < tot; ++i) { 30 if (s[i] != t[i]) { 31 return i; 32 } 33 } 34 return max(ssize, tsize); 35 } 36 }; View Code

?

【165】Compare Version Numbers?(2019年5月5日, 字符處理類型的題目)

比較兩個字符串版本號的大小。input 是 version1 和 version2。

比較規則是: ‘.’ 作為分隔符,如果同一層級的 version1 的number 小于 version2 的 number,返回 -1, 反之,如果大于,返回 1. 如果相等的話,繼續比較下一個層級。

題解:直接模擬法做。時間復雜度是O(N).

1 class Solution { 2 public: 3 int compareVersion(string version1, string version2) { 4 int size1 = version1.size(), size2 = version2.size(); 5 int p1 = 0, p2 = 0; 6 int num1 = 0, num2 = 0; 7 while (p1 < size1 || p2 < size2) { 8 if (p1 < size1 && version1[p1] == '.') {++p1;} 9 if (p2 < size2 && version2[p2] == '.') {++p2;} 10 while (p1 < size1 && isdigit(version1[p1])) { 11 num1 = num1 * 10 + (version1[p1] - '0'); 12 ++p1; 13 } 14 while (p2 < size2 && isdigit(version2[p2])) { 15 num2 = num2 * 10 + (version2[p2] - '0'); 16 ++p2; 17 } 18 if (num1 < num2) {return -1;} 19 if (num1 > num2) {return 1;} 20 num1 = 0, num2 = 0; 21 } 22 return 0; 23 } 24 }; View Code

?

【186】Reverse Words in a String II?(2018年11月8日, 原地翻轉字符串)

Given an input string?, reverse the string word by word.?

Example: Input: ["t","h","e"," ","s","k","y"," ","i","s"," ","b","l","u","e"] Output: ["b","l","u","e"," ","i","s"," ","s","k","y"," ","t","h","e"]Note: A word is defined as a sequence of non-space characters. The input string does not contain leading or trailing spaces. The words are always separated by a single space.

題解:無。

1 class Solution { 2 public: 3 void reverseWords(vector<char>& str) { 4 reverse(str.begin(), str.end()); 5 const int n = str.size(); 6 int p1 = 0, p2 = 0; 7 while (p2 < n) { 8 while (p1 < n && str[p1] == ' ') {p1++;} 9 p2 = p1; 10 while (p2 < n && str[p2] != ' ') {p2++;} 11 reverse(str.begin() + p1, str.begin() + p2); 12 p1 = p2; 13 } 14 return; 15 } 16 }; View Code

?

【214】Shortest Palindrome?(2018年11月2日,周五,算法群)

給了一個字符串 S,為了使得 S 變成回文串可以在前面增加字符,在增加最少的字符的前提下返回新的回文 S。

題解:我的做法跟昨天的題一樣(366)就是找從第一個字符開始最長的回文串,然后把后面的那小段翻轉一下,拼到前面。時間復雜度是O(N^2)

1 //類似的題目可以見 336 Palindrome Pairs 2 class Solution { 3 public: 4 string shortestPalindrome(string s) { 5 const int n = s.size(); 6 string ans = ""; 7 for (int j = n; j >= 0; --j) { 8 if (isPalindrome(s, 0, j-1)) { 9 string str = s.substr(j); 10 reverse(str.begin(), str.end()); 11 ans = str + s; 12 break; 13 } 14 } 15 return ans; 16 } 17 bool isPalindrome(const string& s, int start, int end) { //[start, end] 18 while (start < end) { 19 if (s[start] != s[end]) {return false;} 20 start++, end--; 21 } 22 return true; 23 } 24 }; View Code

應該還有更好的解法:(學習學習學習)。

?

【227】Basic Calculator II?(2019年3月18日)

給了一個字符串,包含數字,+,-,*,/,和空格,求字符串表達式的值。

?

Example 1:

?

Input: "3+2*2" Output: 7

?

Example 2:

?

Input: " 3/2 " Output: 1

?

Example 3:

?

Input: " 3+5 / 2 " Output: 5

?

題解:本題大爺他們說用狀態機的方法來做。狀態機的方法就是遍歷字符串,如果碰到 digit 應該怎么做,如果碰到 + - * / 應該怎么做,如果碰到 空格 應該怎么做。

用一個 vector<int> 做為 cache 緩存前面的只用 +,- 的值。

?

1 class Solution { 2 public: 3 int calculate(string s) { 4 const int n = s.size(); 5 int num = 0; 6 char sign = '+'; 7 vector<int> cache; 8 for (int i = 0; i < n; ++i) { 9 if (isdigit(s[i])) { 10 num = num * 10 + (s[i] - '0'); 11 } 12 if (i == n-1 || !isdigit(s[i]) && s[i] != ' '){ 13 if (sign == '+') {cache.push_back(num);} 14 if (sign == '-') {cache.push_back(-num);} 15 if (sign == '*' || sign == '/') { 16 int last = cache.back(); 17 cache.pop_back(); 18 if (sign == '*') {cache.push_back(last * num);} 19 else if (sign == '/') {cache.push_back(last / num);} 20 } 21 num = 0; 22 if (!isdigit(s[i])) { sign = s[i]; } 23 } 24 } 25 int res = 0; 26 for (auto& e : cache) { 27 res += e; 28 } 29 return res; 30 } 31 }; View Code

?

【249】Group Shifted Strings?

【271】Encode and Decode Strings?

【273】Integer to English Words?

【293】Flip Game?

?

【336】Palindrome Pairs?(2018年11月1日,周四,算法群)

給了一組字符串words,找出所有的pair (i,j),使得 words[i] + words[j] 這個新的字符串是回文串。

題解:這題WA出了天際。因為map似乎一旦訪問了某個不存在的key,這個key就變的存在了。。一開始我想暴力,暴力超時,暴力時間的時間復雜度是O(N^2*K)。后來認真思考了一下一個字符串是怎么變成回文的。如果一個字符串word,他的長度是n,如果它的前半段 word[0..j] 是個回文串,那么我們需要匹配它后面那段 word[j+1..n-1], 我們把后半段reverse一下, 查找字符串集合(map)里面有沒有對應的這段。同理,如果它的后半段 word[j+1..n-1] 是個回文串,那么我們把前半段 reverse一下,在 map 里面查找有沒有前半段就可以了。特別注意這個前半段和后半段都可以包含空串,所以 j 的范圍是[0, n]。

1 class Solution { 2 public: 3 vector<vector<int>> palindromePairs(vector<string>& words) { 4 const int n = words.size(); 5 unordered_map<string, int> mp; 6 for (int i = 0; i < n; ++i) { 7 mp[words[i]] = i; 8 } 9 vector<vector<int>> ans; 10 set<vector<int>> st; 11 for (int i = 0; i < n; ++i) { 12 string word = words[i]; 13 int size = word.size(); 14 for (int j = 0; j <= size; ++j) { 15 if (isPalindrome(word, 0, j-1)) { 16 string str = word.substr(j); 17 reverse(str.begin(), str.end()); 18 //vector<int> candidate = vector<int>{mp[str], i}; 這個不能放在外面,不然mp[str]可能不存在 19 if (mp.find(str) != mp.end() && mp[str] != i) { 20 vector<int> candidate = vector<int>{mp[str], i}; 21 if (st.find(candidate) == st.end()) { 22 ans.push_back(candidate); 23 st.insert(candidate); 24 } 25 } 26 } 27 if (isPalindrome(word, j, size-1)) { 28 string str = word.substr(0, j); 29 reverse(str.begin(), str.end()); 30 //vector<int> candidate = vector<int>{i, mp[str]}; 31 if (mp.find(str) != mp.end() && mp[str] != i) { 32 vector<int> candidate = vector<int>{i, mp[str]}; 33 if (st.find(candidate) == st.end()) { 34 ans.push_back(candidate); 35 st.insert(candidate); 36 } 37 } 38 } 39 } 40 } 41 return ans; 42 } 43 bool isPalindrome(const string& word, int start, int end) { // [start, end] 44 while (start < end) { 45 if (word[start++] != word[end--]) { return false; } 46 } 47 return true; 48 } 49 }; View Code

?聽說這題還能用 trie 解,有空要看答案啊。

?

【340】Longest Substring with At Most K Distinct Characters?(2019年1月29日,谷歌tag復習)

類似題:159. Longest Substring with At Most 2 Distinct Characters, sliding window 一模一樣的。時間復雜度是O(N)?

1 class Solution { 2 public: 3 int lengthOfLongestSubstringKDistinct(string s, int k) { 4 const int n = s.size(); 5 if (n <= k) {return n;} 6 int begin = 0, end = 0, cnt = 0; 7 unordered_map<char, int> mp; 8 int ans = 0; 9 while (end < n) { 10 mp[s[end]]++; 11 if (mp[s[end]] == 1) { 12 ++cnt; 13 } 14 if (cnt <= k) { 15 ans = max(ans, end - begin + 1); 16 } 17 while (cnt > k) { 18 mp[s[begin]]--; 19 if (mp[s[begin]] == 0) { 20 --cnt; 21 } 22 ++begin; 23 } 24 ++end; 25 } 26 return ans; 27 } 28 }; View Code

?

【344】Reverse String?(2018年12月3日,第一次review,ko)

逆序一個字符串。

題解:直接reverse,或者 2 pointers

1 class Solution { 2 public: 3 string reverseString(string s) { 4 int start = 0, end = s.size() - 1; 5 while (start < end) { 6 swap(s[start++], s[end--]); 7 } 8 return s; 9 } 10 }; View Code

?

【345】Reverse Vowels of a String?(2018年12月4日,第一次review,ko)?

逆序一個字符串的元音字母。

題解:2 pointers

1 class Solution { 2 public: 3 string reverseVowels(string s) { 4 set<char> setVowels = {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'}; 5 int left = 0, right = s.size()-1; 6 while (left < right) { 7 while (setVowels.find(s[left]) == setVowels.end()) {++left;} 8 while (setVowels.find(s[right]) == setVowels.end()) {--right;} 9 if (left < right) { //這里需要再次判斷 10 swap(s[left++], s[right--]); 11 } 12 } 13 return s; 14 } 15 }; View Code

?

【383】Ransom Note?

【385】Mini Parser?

【387】First Unique Character in a String?

【408】Valid Word Abbreviation?

【434】Number of Segments in a String?

?

【443】String Compression?(2019年2月12日)

壓縮一個字符數組,"aaa" -> "a3", "bb" -> "b2", "c" -> "c"。要求 in-place。space復雜度為O(1).

題解:用指針做。用一個index指針記錄當前新字符串的末尾的位置。

1 class Solution { 2 public: 3 int compress(vector<char>& chars) { 4 const int n = chars.size(); 5 int idx = 0; 6 int begin = 0, end = 0, cnt = 0; 7 while (end < n) { 8 if (chars[begin] == chars[end]) { 9 ++cnt; ++end; 10 } 11 if (end == n || (end < n && chars[begin] != chars[end])) { 12 chars[idx++] = chars[begin]; 13 if (cnt > 1) { 14 string s = to_string(cnt); 15 for (auto c : s) { chars[idx++] = c; } 16 } 17 begin = end; 18 cnt = 0; 19 } 20 } 21 return idx; 22 } 23 }; View Code

?

【459】Repeated Substring Pattern?

?

【468】Validate IP Address?(2018年12月7日)

判斷一個字符串是不是有效的 IP 地址,區分 IPv4 和 IPv6, 都不是的話返回 Neither。IPv4 的判斷很簡單,就是用 ‘.’ 隔開的四段數字,然后每段數字都在0~255中間,數字沒有前導 0。 IPv6 的判斷比較麻煩,是八段用 ‘:’ 隔開是數字,每段數字都是四位十六進制數。四位數字如果有前置 0 的話,可以省略,以及大小寫都可以忽略不同。

題解:比較復雜的模擬題。我用 getline 分割字符串,注意如果 它已經有 7 個 ‘:’ 分割八段十六進制數之后,如果在尾部還有一個 ‘:’ ,那么這個要特判。?

1 #define NEITHER "Neither" 2 #define IPV4 "IPv4" 3 #define IPV6 "IPv6" 4 5 class Solution { 6 public: 7 string validIPAddress(string IP) { 8 if (IP.find(':') != string::npos) { 9 return checkIPV6(IP); 10 } 11 return checkIPV4(IP); 12 } 13 string checkIPV4(string IP) { 14 int cnt = 0; 15 string word; 16 stringstream ss; 17 ss << IP; 18 if (IP.front() == '.' || IP.back() == '.') {return NEITHER;} 19 while (getline(ss, word, '.')) { 20 cnt++; 21 if (word.size() > 3 || word.empty()) {return NEITHER;} 22 for (int i = 0; i < word.size(); ++i) { 23 if (i == 0 && word[i] == '0' && word.size() > 1 || !isdigit(word[i])) { 24 return NEITHER; 25 } 26 } 27 int num = stoi(word); 28 if (num < 0 || num > 255) {return NEITHER;} 29 } 30 if (cnt != 4) { 31 return NEITHER; 32 } 33 return IPV4; 34 } 35 string checkIPV6(string IP) { 36 int cnt = 0; 37 string word; 38 stringstream ss; 39 ss << IP; 40 if (IP.front() == ':' || IP.back() == ':') {return NEITHER;} 41 while (getline(ss, word, ':')) { 42 cnt++; 43 printf("word = %s \n", word.c_str()); 44 if (word.size() > 4 || word.empty()) {return NEITHER;} 45 for (int i = 0; i < word.size(); ++i) { 46 char c = word[i]; 47 if (!isalnum(c) || c > 'f' && c <= 'z' || c > 'F' && c <= 'Z') { 48 return NEITHER; 49 } 50 } 51 } 52 if (cnt != 8) { 53 return NEITHER; 54 } 55 return IPV6; 56 } 57 }; View Code

??

【520】Detect Capital?

【521】Longest Uncommon Subsequence I?

【522】Longest Uncommon Subsequence II?

【527】Word Abbreviation?

【536】Construct Binary Tree from String?

?

【537】Complex Number Multiplication?(2018年11月27日)

給了兩個字符串,代表兩個 complex, 返回這兩個complex 的乘積(用字符串表示)。

題解:見math分類:https://www.cnblogs.com/zhangwanying/p/9790007.html

?

【539】Minimum Time Difference?(2019年2月11日)

給了一個字符串list,代表時間,返回最小的時間差(分鐘為單位)。

Input: ["23:59","00:00"] Output: 1?

題解:先排序,然后兩兩相鄰的相減。還有第一個和最后一個相減。

1 class Solution { 2 public: 3 int findMinDifference(vector<string>& timePoints) { 4 sort(timePoints.begin(), timePoints.end()); 5 int ret = calDiff(timePoints[0], timePoints.back()); 6 for (int i = 0; i < timePoints.size() - 1; ++i) { 7 ret = min(ret, calDiff(timePoints[i], timePoints[i+1])); 8 } 9 return ret; 10 } 11 int calDiff(string s1, string s2) { 12 int num1 = trans(s1), num2 = trans(s2); 13 if (num1 < num2) { swap(num1, num2); } 14 return min(num1 - num2, num2 + 1440 - num1); 15 } 16 int trans(string s) { 17 int hour = stoi(s.substr(0, 2)); 18 int min = stoi(s.substr(3)); 19 return hour * 60 + min; 20 } 21 }; View Code

?

【541】Reverse String II?

【544】Output Contest Matches?

【551】Student Attendance Record I?

【553】Optimal Division?

【555】Split Concatenated Strings?

【556】Next Greater Element III?

【557】Reverse Words in a String III?

?

【564】Find the Closest Palindrome?(2019年3月3日,H)

給定一個字符串 N, 求距離 N 最近的回文數。

  • The input?n?is a positive integer represented by string, whose length will not exceed 18.
  • If there is a tie, return the smaller one as answer.?
  • Input: "123" Output: "121"

    題解:唔,這個題看了awice的思路。就是說,我們先把這個數分成前面一半和后面一半,比如“23456”,一半就是“234”,用前面一半分別 +{-1, 0 ,1}, 然后生成對應的回文(注意原數字長度的奇偶性)。這樣能生成3個candidate。

    但是其實還有兩個數字,就是比給定數字長度少一位的最大回文,9999...999,和比給定數字長度多一位的最小回文,10...01。一共五個candidate。

    如果candidate中有N本身,就忽略掉。從candidate中選出距離最近的那個。

    1 class Solution { 2 public: 3 string nearestPalindromic(string n) { 4 const int size = n.size(); 5 string strHalf = n.substr(0, (size + 1)/ 2); 6 long long half = stoll(strHalf); 7 set<string> st; 8 long long biggest = pow(10LL, size) + 1, smallest = pow(10LL, size - 1) - 1; 9 st.insert(to_string(smallest)); 10 st.insert(to_string(biggest)); 11 for (int i = -1; i <= 1; ++i) { 12 string p = to_string(half + i); 13 string pp = p; 14 if (size & 1) { 15 pp += string(p.rbegin() + 1, p.rend()); 16 } else { 17 pp += string(p.rbegin(), p.rend()); 18 } 19 st.insert(pp); 20 } 21 st.erase(n); 22 string res = ""; 23 long long absMinDiff = LLONG_MAX; 24 for (auto& s : st) { 25 long long num = stoll(s), target = stoll(n); 26 if (abs(num - target) < absMinDiff) { 27 res = s; 28 absMinDiff = abs(num - target); 29 } else if (abs(num - target) == absMinDiff && num < target) { 30 res = s; 31 } 32 } 33 return res; 34 } 35 }; View Code

    ?

    【583】Delete Operation for Two Strings?

    【591】Tag Validator?

    ?

    【606】Construct String from Binary Tree?

    2018年11月14日,樹的分類里面做了:https://www.cnblogs.com/zhangwanying/p/6753328.html

    ?

    【609】Find Duplicate File in System?

    【616】Add Bold Tag in String?

    【632】Smallest Range?

    【635】Design Log Storage System?

    【647】Palindromic Substrings?

    【657】Robot Return to Origin?

    【678】Valid Parenthesis String?

    ?

    【680】Valid Palindrome II?(2019年2月12日)

    輸入是一個字符串,問字符串最多刪除一個字符,看能不能變成回文字符串。

    題解:2 pointers 先遍歷,找到第一個失配的地方,然后分別從左右去查找跳過這個字符,剩下的字符串是不是能成回文。

    1 class Solution { 2 public: 3 bool validPalindrome(string s) { 4 int begin = 0, end = s.size() - 1; 5 while (begin < end) { 6 if (s[begin] != s[end]) { 7 if (isValid(s, begin+1, end) || isValid(s, begin, end-1)) { 8 return true; 9 } 10 return false; 11 } 12 ++begin, --end; 13 } 14 return true; 15 } 16 bool isValid(string s, int begin, int end) { 17 while (begin < end) { 18 if (s[begin++] != s[end--]) {return false;} 19 } 20 return true; 21 } 22 }; View Code

    ?

    【681】Next Closest Time?(2019年1月29日,谷歌tag復習)

    給了一個字符串,代表時間,HH:MM,返回用當前數字組成的合法的下一個時間。There is no limit on how many times a digit can be reused.

    Input: "19:34" Output: "19:39" Explanation: The next closest time choosing from digits 1, 9, 3, 4, is 19:39, which occurs 5 minutes later. It is not 19:33, because this occurs 23 hours and 59 minutes later. Input: "23:59" Output: "22:22" Explanation: The next closest time choosing from digits 2, 3, 5, 9, is 22:22. It may be assumed that the returned time is next day's time since it is smaller than the input time numerically.

    題解:思路就是先把所有的四個數字存下來,從最小的(分針)開始往前找,如果找到了比當前位置更大的一個數的話,就用這個更大的數字去代替當前的數字。(前提是這個更大的數字代替完了之后這個時間得合法。)如果找到最大的位置都沒有找到的話,那就用最小的數字生成一個第二天的時間來作為新的數字。

    1 class Solution { 2 public: 3 string nextClosestTime(string time) { 4 set<int> st; 5 int minn = 10; 6 for (int i = 0; i < 5; ++i) { 7 if (isdigit(time[i])) { 8 int t = time[i] - '0'; 9 minn = min(t, minn); 10 st.insert(t); 11 } 12 } 13 if (st.size() == 1) {return time;} //invalid 14 string ret = time; 15 for (int i = 4; i >= 0; --i) { 16 char c = ret[i]; 17 int t = c - '0'; 18 auto iter = upper_bound(st.begin(), st.end(), t); 19 if (iter == st.end()) {continue;} 20 if (i == 0 && *iter > 2) { 21 continue; 22 } 23 if (i == 1 && *iter > 4 && ret[0] == '2') { 24 continue; 25 } 26 if (i == 3 && *iter > 5) { 27 continue; 28 } 29 ret[i] = (*iter) + '0'; 30 for (int k = i + 1; k < 5; ++k) { 31 if (isdigit(ret[k])) { 32 ret[k] = minn + '0'; 33 } 34 } 35 break; 36 } 37 if (ret == time) { 38 for (auto& c : ret) { 39 if (isdigit(c)) { 40 c = minn + '0'; 41 } 42 } 43 } 44 return ret; 45 46 } 47 }; View Code

    ?

    【686】Repeated String Match?

    【696】Count Binary Substrings?

    【709】To Lower Case?

    ?

    【722】Remove Comments?(2019年2月16日, M)

    給了一個字符串的數組,每個字符串代碼一行代碼,里面'//', '/*', '*/' 分別代表一行和多行注釋。返回去掉注釋后的代碼段。

    題解:用兩個bool變量記錄,inline記錄是否當前在//注釋里面,inBlock記錄是否當前在 /**/ 里面。然后業務邏輯比較一下。

    1 class Solution { 2 public: 3 vector<string> removeComments(vector<string>& source) { 4 vector<string> res; 5 bool inBlock = false; 6 string s = ""; 7 for (auto& line : source) { 8 const int n = line.size(); 9 bool inLine = false; 10 for (int i = 0; i < n; ++i) { 11 if (i + 1 < n && line[i] == '/') { 12 if (line[i+1] == '/' && !inBlock) { 13 inLine = true; 14 } else if (line[i+1] == '*' && !inLine && !inBlock) { 15 ++i, inBlock = true; 16 } else if (!inBlock && !inLine) { 17 s += string(1, line[i]); 18 } 19 } else if (i + 1 < n && line[i] == '*' && line[i+1] == '/') { 20 if (inBlock) { 21 ++i, inBlock = false; 22 } else if (!inLine){ 23 s += string(1, line[i]); 24 } 25 } else { 26 if (inBlock || inLine) {continue;} 27 s += string(1, line[i]); 28 } 29 } 30 if (!inBlock && !s.empty()) { 31 res.push_back(s); 32 s.clear(); 33 } 34 } 35 return res; 36 } 37 }; View Code

    ?

    【730】Count Different Palindromic Subsequences?

    ?

    【736】Parse Lisp Expression?

    ?

    【758】Bold Words in String?

    ?

    【761】Special Binary String?

    ?

    【767】Reorganize String?

    ?

    【770】Basic Calculator IV?

    【772】Basic Calculator III?

    【788】Rotated Digits?

    ?

    【791】Custom Sort String?(2018年11月27日)

    給了兩個字符串 S 和 T, S中最多有 26個小寫字母,給 T 重新排序,如果字母 x, y 在 S 中出現,且在 T 中出現,如果在 S 中 x 出現在 y 之前, 那么在 T 中 x 也要出現在 y 之前。沒有在 S 中出現的字符就隨便放哪里都可以。

    題解:直接 unordered_map

    1 class Solution { 2 public: 3 string customSortString(string S, string T) { 4 const int n = T.size(); 5 unordered_map<char, int> mp; 6 for (int i = 0; i < n; ++i) { 7 mp[T[i]]++; 8 } 9 string ret; 10 for (auto c : S) { 11 if (mp.find(c) == mp.end() || mp[c] == 0) {continue;} 12 ret += string(mp[c], c); 13 mp[c] = 0; 14 } 15 for (auto ele : mp) { 16 if (ele.second > 0) { 17 ret += string(ele.second, ele.first); 18 } 19 } 20 return ret; 21 } 22 }; View Code

    ?

    【800】Similar RGB Color?

    【804】Unique Morse Code Words?

    ?

    【809】Expressive Words?(2019年2月13日,google tag)

    給了一個word S和一個word list,問word list中有多少pattern符合S。一個 pattern w 符合 S 的條件是,w extend之后可以變成 S。w 中的一個字母可以extend成三個或者三個以上相同的字母。問word list中有多少個這樣的pattern。

    題解:我的解法時間復雜度是O(NM),空間復雜度使用了一個map,還是比較高的。我的解法的說明如下:對于S中每一個小段重復序列,計算當前字符重復了多少次。根據不同重復的次數得到pattern中的相同字符的范圍,然后去對比pattern。

    1 class Solution { 2 public: 3 int expressiveWords(string S, vector<string>& words) { 4 const int n = S.size(); 5 unordered_map<string, int> mp; 6 for (auto& w : words) { mp[w] = 0; } 7 int begin = 0, end = 0, cnt = 0; 8 int res = 0; 9 while (end < n) { 10 while (end < n && S[begin] == S[end]) { 11 ++end; 12 } 13 cnt = end - begin; 14 pair<int, int> range(0, 0); 15 if (cnt <= 2) { 16 range = make_pair(cnt, cnt); 17 } else { 18 range = make_pair(1, cnt + 1 - 3); 19 } 20 res = 0; 21 for (auto& p : mp) { 22 string pattern = p.first; 23 int start = p.second, end1 = start, size = pattern.size(); 24 if (start < 0) {continue;} 25 while (end1 < size && pattern[end1] == pattern[start]) { 26 ++end1; 27 } 28 int sameSize = end1 - start; 29 if (sameSize >= range.first && sameSize <= range.second) { 30 p.second = end1; 31 ++res; 32 } else { 33 p.second = -1; 34 } 35 } 36 begin = end; 37 } 38 return res; 39 } 40 }; View Code

    還有lee215的解法。寫的很短,也很好理解。需要好好復習學習。

    用word list中每個單詞和S做一個比較,比較規則如下:

    Loop through all words.?check(string S, string W)?checks if?W?is stretchy to?S.

    In?check?function, use two pointer:

  • If?S[i] == W[j],?i++, j++
  • If?S[i - 2] == S[i - 1] == S[i]?or?S[i - 1] == S[i] == S[i + 1],?i++
  • return false
  • 1 class Solution { 2 public: 3 int expressiveWords(string S, vector<string>& words) { 4 int res = 0; 5 for (auto& w : words) { 6 if (check(S, w)) {++res;} 7 } 8 return res; 9 } 10 bool check(const string& s, const string& w) { 11 int n = s.size(), m = w.size(); 12 int j = 0; 13 for (int i = 0; i < n; ++i) { 14 if (j < m && s[i] == w[j]) {++j;} 15 else if (i - 2 >= 0 && s[i] == s[i-1] && s[i] == s[i-2]) {;} 16 else if (i - 1 >= 0 && i + 1 < n && s[i] == s[i-1] && s[i] == s[i+1]) {;} 17 else { return false; } 18 } 19 return j == m; 20 } 21 }; View Code

    ?

    【816】Ambiguous Coordinates?

    【819】Most Common Word?

    【824】Goat Latin?

    【831】Masking Personal Information?

    【833】Find And Replace in String?

    【842】Split Array into Fibonacci Sequence?

    【848】Shifting Letters?

    【856】Score of Parentheses?

    【859】Buddy Strings?

    【890】Find and Replace Pattern?

    【893】Groups of Special-Equivalent Strings?

    【899】Orderly Queue?

    轉載于:https://www.cnblogs.com/zhangwanying/p/9885334.html

    總結

    以上是生活随笔為你收集整理的【LeetCode】字符串 string(共112题)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    天天色天天操天天爽 | 91香蕉国产 | 天天操天天能 | 91网在线| 亚洲三级av| 国产看片网站 | 欧美日韩视频免费 | 精品视频免费 | 日韩大片在线看 | 福利视频第一页 | a'aaa级片在线观看 | 中字幕视频在线永久在线观看免费 | 日本在线免费看 | 丁香六月婷婷综合 | www.午夜| 久青草视频 | 一区二区三区动漫 | 91看毛片| 亚洲免费av一区二区 | 日韩欧美一区二区三区在线观看 | 日韩高清一| 国产永久免费 | 四虎4hu永久免费 | 国产精品视频在线观看 | av中文在线观看 | 91av亚洲| 久久国产精品免费一区二区三区 | 四虎国产永久在线精品 | 欧美精品免费一区二区 | www狠狠| 久久伊人精品一区二区三区 | 制服丝袜成人在线 | 亚洲精品在线免费观看视频 | 麻豆传媒视频观看 | 国产成人99av超碰超爽 | 日韩精选在线 | 国产精品久久久久久模特 | 国产精品第十页 | 成人试看120秒 | 国内三级在线观看 | 99热999| 日本爽妇网 | 国产高清在线观看av | 啪啪精品| 波多野结衣一区二区三区中文字幕 | 999电影免费在线观看2020 | 91尤物国产尤物福利在线播放 | 狠狠操狠狠干2017 | 天天综合网久久综合网 | 在线电影av | 国产日韩精品一区二区在线观看播放 | 能在线观看的日韩av | 久久国产热视频 | 91精品在线免费观看视频 | 日韩久久精品一区二区三区 | bbbbb女女女女女bbbbb国产 | 四虎亚洲精品 | 久久天天操 | 久久专区 | av电影在线观看 | 色综合色综合久久综合频道88 | 中文字幕日韩一区二区三区不卡 | 久久久久国产精品一区二区 | 国产成人精品一区二 | 天天色官网 | 麻豆国产视频 | 亚洲免费永久精品国产 | 国产成人精品av久久 | 最新中文字幕视频 | 波多野结衣视频一区二区三区 | 国产色女人 | 久久99国产精品免费网站 | 亚洲一二区视频 | 在线观看的av网站 | 中文字幕乱码电影 | 色婷婷亚洲婷婷 | 欧美一区二区在线免费看 | 免费av网站在线看 | 97超碰伊人 | 国产一区二区高清不卡 | 99资源网 | 国产黄色片在线 | 久久99最新地址 | 在线观看中文字幕一区二区 | 少妇精69xxtheporn| 91香蕉嫩草| 一级免费片 | 久久精品牌麻豆国产大山 | 久草在线电影网 | 日本久久精品视频 | 国产免费激情久久 | 免费网站在线观看成人 | 成人福利在线播放 | 看av免费网站| 欧美精品久久久久久久免费 | 午夜91视频 | 一本色道久久精品 | 国产五月色婷婷六月丁香视频 | 日韩专区中文字幕 | 在线导航福利 | 探花视频在线观看免费 | 久久综合网色—综合色88 | 四川bbb搡bbb爽爽视频 | 特黄特色特刺激视频免费播放 | 91精品国| 中文欧美字幕免费 | 国产黄在线播放 | 色噜噜日韩精品一区二区三区视频 | 日本大尺码专区mv | 日韩一级黄色大片 | av.com在线| 夜夜爽天天爽 | 人人草人人做 | 808电影| 91精彩在线视频 | av在线免费在线观看 | 8x8x在线观看视频 | 99精品视频免费全部在线 | 欧美色图一区 | 欧美日韩视频观看 | 在线你懂的视频 | 欧美另类人妖 | 999视频网| 国产区在线视频 | 91久久久久久久一区二区 | 国产精品扒开做爽爽的视频 | 香蕉影视app| 亚洲免费一级电影 | 久久九九国产视频 | 97超碰色| 天天操夜操视频 | 日韩肉感妇bbwbbwbbw | av播放在线 | 欧美日韩有码 | 人人爱人人做人人爽 | 在线视频 亚洲 | 亚洲精品视频大全 | 99久久精品国产一区 | 99精品福利 | 免费网站看av片 | 国产高清视频在线播放 | 久久久综合色 | 九九热有精品 | 亚洲精品99久久久久中文字幕 | 91成年人网站 | 中文字幕在线视频国产 | 久av在线| 久久99国产精品免费网站 | 99久久综合国产精品二区 | 午夜精品一区二区三区免费 | 午夜少妇| 精品久久久久久久久中文字幕 | 国产精品12345 | 亚洲黄色影院 | 日韩三级视频 | 国产一级小视频 | 日日夜夜艹 | 99这里只有精品视频 | 久青草影院| 粉嫩av一区二区三区免费 | 高清av中文在线字幕观看1 | 中文字幕视频免费观看 | 亚洲欧美激情精品一区二区 | 最新免费中文字幕 | 欧美黄在线 | 欧美日韩视频 | 国产中文在线观看 | 久久久久 免费视频 | 日韩激情免费视频 | 亚洲手机av | 91在线看片| 免费在线观看成年人视频 | 国产精品综合av一区二区国产馆 | 97香蕉视频| 久久久久亚洲精品中文字幕 | 日韩欧美在线观看一区 | 日韩av电影免费在线观看 | 在线观看国产 | 黄色成人av网址 | 亚洲精品国偷自产在线99热 | 午夜精品久久久久久久爽 | 午夜国产一区二区 | 久热免费在线观看 | 美女精品在线观看 | 日本高清久久久 | 久久精品视频99 | 黄色a视频| 国产女人18毛片水真多18精品 | 国产精品一区电影 | 特级毛片在线免费观看 | av大全在线 | 国产视频美女 | 国产日韩欧美在线观看 | 午夜精品一区二区三区视频免费看 | 黄色免费网站下载 | 色香网 | 久久99久久99精品免观看粉嫩 | 国产精品一区二区你懂的 | 91免费高清| 亚洲高清在线观看视频 | 天天色天天干天天 | 色婷婷色| 人人干干人人 | 新av在线 | www黄色 | a色网站 | 久久久久久亚洲精品 | 91精品伦理 | 伊人精品影院 | 免费av 在线 | 日韩视频一二三区 | 久久综合九色综合久久久精品综合 | 成人影音av| avcom在线| 激情综合网五月激情 | 国产精品99久久久久的智能播放 | 日韩电影在线视频 | 中文字幕人成乱码在线观看 | 中文字幕第| 91看成人 | 亚洲日本精品 | 国产亚洲午夜高清国产拍精品 | 黄色三级免费 | 亚洲成a人片在线www | 欧美精品一区在线 | 天天拍天天草 | 国产色啪| 欧美成年网站 | 成人av资源网 | 91福利视频一区 | 天天干天天做天天操 | 成人啊 v | 欧美日韩中文另类 | 欧美日韩国产一区 | 久久最新网址 | 99精品视频精品精品视频 | 国内精品久久天天躁人人爽 | 美女网站一区 | 久久久久久毛片 | 一级性av| 中文字幕视频 | 久久视频国产 | 黄色aaa毛片 | 成人毛片在线观看视频 | 天天射天天射天天射 | 久久99视频免费观看 | 久久激情五月婷婷 | 亚洲黄色免费电影 | 在线视频区 | 国产亚洲精品女人久久久久久 | 国产一区二区电影在线观看 | 91大神视频网站 | 97av在线视频免费播放 | 欧美性猛片, | zzijzzij亚洲成熟少妇 | 欧美天堂久久 | 色五月激情五月 | 我爱av激情网 | 国产精品免费在线视频 | 中文免费| 91爱爱免费观看 | 婷婷色六月天 | 国产黄色片网站 | 日日久视频 | 国产亚洲精品久久久久久 | 天天色播| 亚洲国产美女久久久久 | 日韩视频1区 | 久久久久久免费视频 | 国产最新91 | 福利视频区| 九九免费视频 | 亚洲 欧美 变态 国产 另类 | 五月综合婷 | 亚洲欧洲久久久 | 成人欧美在线 | 成人一区二区三区在线 | 九九综合在线 | 日韩久久在线 | 探花系列在线 | a爱爱视频 | 人人草在线视频 | 色网影音先锋 | 91热在线| a级片久久久 | 97在线视频免费观看 | 2019中文在线观看 | 亚洲最新av | 精品久久一二三区 | 欧美一级久久久 | 久久久久久久久国产 | 午夜视频不卡 | 国产精品毛片久久蜜 | 亚洲2019精品| 在线岛国av | 日韩免费高清在线观看 | 麻豆视频免费观看 | 亚洲综合色播 | 中文字幕一区二区在线观看 | 国产丝袜美腿在线 | 久久久久久久久久影院 | 天天操天天操天天操天天操天天操 | 国产精品午夜久久 | 国产高清av | 精品在线播放视频 | 日韩在线三级 | 一区二区三区四区五区在线 | 色婷丁香| 午夜在线免费观看 | 久精品视频免费观看2 | 最近中文字幕mv免费高清在线 | 丁香花中文在线免费观看 | 亚洲精品高清在线 | 制服丝袜在线 | 黄a在线看| 91精品国产一区二区在线观看 | 免费看毛片网站 | 久久看视频| 亚洲精选在线 | 色综合天天天天做夜夜夜夜做 | 一区二区三区不卡在线 | 伊人五月综合 | 夜色资源站国产www在线视频 | 成人免费在线观看电影 | 涩涩网站在线播放 | 91高清在线| 伊人五月综合 | 美女视频黄免费 | 日韩av一区二区在线 | 91视视频在线直接观看在线看网页在线看 | www久久久久 | 少妇做爰k8经典 | 日日操夜 | 国产天天爽 | www日韩在线 | 美女久久久 | 日韩欧美在线观看 | 在线免费黄色av | 美女视频黄免费 | 一区二区三区免费在线播放 | 黄色在线观看免费网站 | 日本丶国产丶欧美色综合 | 日韩大片在线看 | 国产精品v欧美精品v日韩 | 婷婷中文字幕 | 久久久久欠精品国产毛片国产毛生 | 91新人在线观看 | 久久精品播放 | 日韩av不卡播放 | 九九视频这里只有精品 | 91精品国产乱码在线观看 | 天天干夜夜擦 | 久久久久久久久久网站 | 久久香蕉电影网 | 免费观看www视频 | 午夜婷婷在线观看 | 中文字幕成人在线 | 国产一区二区免费在线观看 | 国内免费久久久久久久久久久 | 国产美女网 | 天堂网av在线 | 日本久久精品 | 久久97精品 | 91精品国产三级a在线观看 | 久久久久国产精品免费网站 | 国内一区二区视频 | 亚洲国产精品一区二区尤物区 | 国产一区二区精品 | 日本精品久久久久中文字幕 | 日韩精品91偷拍在线观看 | 手机av在线免费观看 | 在线国产片 | 中文字幕在线观看视频一区二区三区 | 色小说av | 亚洲国产成人在线观看 | 日日久视频| www.久久成人| 福利视频一区二区 | 久久久久久毛片精品免费不卡 | 欧美国产高清 | 国产精品久久久久国产精品日日 | 免费观看特级毛片 | 亚洲精品久 | 国产美女视频网站 | 天天激情站 | 亚洲视频免费在线 | 婷婷网站天天婷婷网站 | 99r在线 | 日韩欧美视频免费观看 | 亚洲综合在线观看视频 | 69精品人人人人 | 中文字幕在线免费观看 | 久久精品看片 | 亚洲黄色av一区 | 在线黄色国产电影 | 在线观看视频在线观看 | 免费美女久久99 | 中文字幕在线观看一区 | 国产一级片免费视频 | 亚洲综合成人在线 | 免费看一级特黄a大片 | 国产人成在线视频 | 国产精品一区二区久久精品爱微奶 | 狠狠狠狠狠狠狠干 | 99se视频在线观看 | 97超在线视频 | 九九日九九操 | 国产看片网站 | 91av视频在线免费观看 | 好看av在线 | 免费网站色 | 在线观看91精品国产网站 | 久久免费国产精品1 | 国产精品成人免费 | 国产精品黑丝在线观看 | 99爱在线| 一区二区电影在线观看 | 国产香蕉久久精品综合网 | 777久久久 | 婷婷日 | 免费高清影视 | 久久99精品久久久久蜜臀 | 小草av在线播放 | 色婷婷狠 | 99久热在线精品视频观看 | 黄色免费在线看 | 毛片网站在线看 | 国产精品手机播放 | 在线免费观看欧美日韩 | 欧美另类色图 | 国产va在线 | 国产黄色片免费观看 | 日韩偷拍精品 | 精品伊人久久久 | 碰超人人| 久久99爱视频| 日韩特黄一级欧美毛片特黄 | 天天操天天操天天操天天操天天操天天操 | 亚洲国产精品500在线观看 | 黄色软件大全网站 | 综合在线亚洲 | 日批在线观看 | 一区二区在线影院 | 最新成人av | 欧美成人tv | 午夜精品一区二区三区视频免费看 | 亚洲精品免费观看视频 | 福利片免费看 | 五月天婷婷在线播放 | 免费在线一区二区三区 | 午夜精品视频一区二区三区在线看 | 99热最新精品 | 在线色亚洲 | 日韩专区中文字幕 | 久草精品视频在线播放 | 91尤物国产尤物福利在线播放 | 天堂va在线观看 | 色香网 | 国产亚洲精品久久久久秋 | 亚洲精品乱码久久久久久蜜桃欧美 | 4hu视频 | 国产精品手机在线播放 | 97在线免费视频观看 | 天天爱天天操天天爽 | 午夜精品中文字幕 | 亚洲精品国产精品久久99 | 亚洲成人黄色在线观看 | 美女黄视频免费 | 国产精品视频免费在线观看 | 国产69精品久久久久99尤 | 精品视频999 | 成人h动漫精品一区二 | 免费在线观看一区 | 日韩肉感妇bbwbbwbbw | 中文字幕2021 | 日韩午夜视频在线观看 | 日韩av中文在线 | 一区二区三区免费在线观看视频 | 亚洲精品xxx | 一级久久久 | 欧美极品久久 | 亚洲国产中文字幕 | 精品免费视频 | 一区二区三区四区五区在线视频 | 国产色在线,com | 免费看av片网站 | 97超碰网| 国产视频久久 | 亚洲人xxx | 欧美乱熟臀69xxxxxx | 日韩中文幕| 高清视频一区 | 国产成人免费观看久久久 | 成人久久亚洲 | 久久国产精品99久久久久久丝袜 | 一区在线观看视频 | 国内精品99| av福利网址导航 | 亚洲精品视频www | 一区二区三区精品久久久 | 久久久久国产精品厨房 | 国内精品美女在线观看 | 四虎影视成人永久免费观看亚洲欧美 | 精品国内自产拍在线观看视频 | 色视频在线观看 | 欧美久久99 | 中文字幕在线一区二区三区 | 成人免费一区二区三区在线观看 | av导航福利 | 狠狠狠狠狠狠 | 久草免费看 | 国产尤物在线视频 | 中文字幕网址 | 免费碰碰| 亚洲日韩精品欧美一区二区 | 韩国av电影在线观看 | 婷婷国产在线观看 | 国产精品精品国产色婷婷 | 青青久草在线视频 | 精品国产亚洲日本 | 在线观看视频97 | 一级片免费观看 | 精品网站999www| 一区免费在线 | 免费网址你懂的 | 一区二区三区四区五区在线 | 伊人五月天综合 | 天天添夜夜操 | 中文在线√天堂 | 日韩av在线免费播放 | 五月导航| 免费高清av在线看 | 亚洲精品视频在线播放 | 五月婷婷在线观看视频 | 久久久久看片 | 一区二区中文字幕在线观看 | 国产网站色| av中文字幕网 | 国产精品久一 | 久久国产精品影片 | 婷婷电影在线观看 | 国内精品久久久久久中文字幕 | 91av在线精品 | 一区二区三区四区五区六区 | 日本在线视频网址 | 97在线观视频免费观看 | 综合久久久| 国产一级淫片免费看 | 在线 视频 一区二区 | 午夜精品久久久久久久99热影院 | 久久精品一区二区三区视频 | 国产一二三四在线观看视频 | 中文字幕在线观看免费 | 狠狠操操操| 在线看片中文字幕 | 免费在线观看黄 | 国产精品电影在线 | 日韩在线网址 | 国产精品毛片久久 | 黄色三级网站 | 99re热精品视频 | 午夜精品久久久久久久99热影院 | 美女视频一区 | 麻豆国产网站入口 | 黄a网 | 中文字幕网址 | 在线电影 一区 | 五月天激情视频 | a视频在线观看免费 | 国产在线a免费观看 | 久久免费在线 | 精品久久久久久久久久国产 | 国产精品18久久久久久久 | 亚洲人片在线观看 | 狠狠躁夜夜躁人人爽超碰91 | 日本成人免费在线观看 | 一本一道久久a久久综合蜜桃 | 国产97色 | 久久综合九色综合欧美就去吻 | 伊人伊成久久人综合网小说 | 国内精品免费久久影院 | 久久手机免费视频 | 免费观看国产精品 | 精品国产123 | 久久久国产一区二区三区 | 在线观看国产中文字幕 | 丰满少妇久久久 | 五月天色综合 | 欧美色图狠狠干 | 中文字幕有码在线观看 | 99久久电影 | 国产在线精品二区 | 亚洲国产三级在线 | 91麻豆网站| 中文字幕在线观看一区二区三区 | 亚洲精品乱码久久久久久写真 | 久国产在线播放 | 成人一区二区三区在线观看 | 久久美女精品 | 婷婷色中文网 | 99免在线观看免费视频高清 | 亚洲一区 av | 国产黄影院色大全免费 | 精品无人国产偷自产在线 | 五月综合网站 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 精品一区二区在线免费观看 | 国产成人精品一区二区三区福利 | 国产高清视频网 | 国产a国产 | 中文字幕一区二区三区乱码在线 | 欧美做受高潮电影o | 91大片网站 | 亚洲综合色视频在线观看 | 人人添人人澡人人澡人人人爽 | 国产.精品.日韩.另类.中文.在线.播放 | 国产一区二区不卡视频 | av在线播放不卡 | 天天射天天爽 | 久久成人国产精品免费软件 | 国产精品久久久久久久久毛片 | 国产精品视频久久久 | 免费观看v片在线观看 | 人人爱爱| 91成版人在线观看入口 | 国产精品系列在线观看 | 一区二区中文字幕在线观看 | 久久人91精品久久久久久不卡 | 国产美女精品视频免费观看 | 激情久久伊人 | 国产免费一区二区三区最新6 | 国产精品k频道 | 天天插天天 | 成人动漫精品一区二区 | 99色免费视频 | 碰超在线 | 91看片网址| www.狠狠操.com | 中文字幕精品三区 | 国产成人av电影在线 | 中文字幕免费观看视频 | 久草手机视频 | 香蕉色综合 | 丁香九月激情 | 日本不卡123 | 国内精品免费久久影院 | 五月丁色 | 精品一区 在线 | 青青草久草在线 | 久久视频在线观看中文字幕 | 天天搞天天 | 日本午夜免费福利视频 | 免费日韩一区 | 狠狠色综合网站久久久久久久 | 69精品久久久 | 97超碰资源总站 | 中文字幕在线观看完整版 | 99在线视频播放 | 国产精品亚洲片在线播放 | 国产精品久久久久久久免费观看 | 日韩欧美一区二区三区免费观看 | 亚洲国产人午在线一二区 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 狠狠色2019综合网 | 一区二区视 | 波多野结衣在线视频一区 | 日韩欧美在线综合网 | 国产一区视频免费在线观看 | 黄色av免费电影 | 日韩在线电影 | 日本久久综合网 | 99一级片 | 黄色在线观看免费 | 午夜av影院 | 国产精品美女久久久网av | 日本女人逼 | 777久久久 | 国外成人在线视频网站 | 国产成人在线免费观看 | 四虎在线免费 | 欧美三级免费 | 国产剧情一区 | 黄色软件在线看 | av电影在线观看完整版一区二区 | 国产亚洲精品美女久久 | 日本大片免费观看在线 | 天天干天天爽 | 五月婷婷激情综合 | 精品国产日本 | 国产护士在线 | 麻豆av一区二区三区在线观看 | 国内视频1区 | 欧美日韩精| 成人在线观看你懂的 | 亚洲精品在线网站 | av中文字幕电影 | 亚洲男人天堂a | 中文字幕资源在线观看 | 亚洲 中文字幕av | 久久精品一区二区三区国产主播 | 超碰在线观看av.com | 91人人澡人人爽人人精品 | 欧美国产视频在线 | 久久成年人网站 | 久久精品1区 | 亚洲精品网页 | 久久精品久久精品 | 在线免费观看的av | 免费高清在线观看电视网站 | 日韩免费b | 九九久久久 | 免费福利视频导航 | 国产中文字幕视频在线观看 | 免费电影播放 | 高清有码中文字幕 | 国产精品国产亚洲精品看不卡15 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 1区2区3区在线观看 三级动图 | 日日夜夜精品 | 久久8精品| 在线观看中文字幕第一页 | 国产一级特黄电影 | 日本精品一区二区三区在线播放视频 | 久久久国产在线视频 | 人人添人人| 69视频网站 | 色综合久久88色综合天天人守婷 | 欧美色插 | 精品一二三区视频 | 久久99久久99精品中文字幕 | 成人黄色免费在线观看 | 亚洲经典中文字幕 | 亚洲一区尤物 | 成人黄色毛片视频 | www.97视频| 久久av不卡| 久香蕉| 国产精品久久99综合免费观看尤物 | 91精品久久久久久久91蜜桃 | 黄色一及电影 | 正在播放国产一区 | 久久久久久久网 | 欧美 亚洲 另类 激情 另类 | 亚洲久久视频 | 狠狠色丁香久久综合网 | 天天综合久久综合 | 91在线播放国产 | 欧美日韩国产成人 | 欧美精品在线观看免费 | 在线观看网站av | 97视频入口免费观看 | 欧美在线一级片 | 欧美精品一二三 | 精品国产一区二区三区久久久蜜月 | 激情影院在线观看 | 国产精品一区在线 | 欧美日韩性视频 | 日韩免费福利 | 日本中文字幕免费观看 | bbb搡bbb爽爽爽| 国产精品久久久99 | 欧美性生活小视频 | 日韩女同av | 国产午夜三级一二三区 | 亚洲国产一区在线观看 | 精品五月天 | 中文字幕av免费 | 免费看黄在线观看 | 成人午夜影院在线观看 | 中文字幕乱在线伦视频中文字幕乱码在线 | 欧美黑吊大战白妞欧美 | 久久综合欧美精品亚洲一区 | 午夜国产在线观看 | 午夜天使| 91网站免费观看 | 午夜av免费在线观看 | av免费网页 | 久久午夜免费视频 | 欧美日韩18| 亚洲精品国产精品国自产观看浪潮 | 亚洲天堂网在线视频观看 | 欧美视频日韩 | 二区三区在线视频 | 91视频免费网址 | 国产精品自在线拍国产 | 精品视频免费久久久看 | 五月天婷婷丁香花 | 韩国一区二区在线观看 | 日韩精品在线播放 | 最新国产在线视频 | www.午夜视频 | 免费观看9x视频网站在线观看 | 欧洲精品二区 | 久久艹国产 | 亚洲精品国产视频 | 欧美黑人xxxx猛性大交 | av在线电影免费观看 | 亚洲国产操 | 久久美女视频 | 国产成人精品一区二区三区福利 | 在线观看av中文字幕 | 久久久久在线观看 | 极品国产91在线网站 | 色综合久久久久网 | 中文字幕在线观看第二页 | 五月天综合色激情 | 中文字幕免费在线 | 五月天久久久久 | av在线一级 | 日韩一级片大全 | 日韩在线视频网站 | 亚洲国产三级在线观看 | 日日天天 | 国产精品原创av片国产免费 | 成年人免费在线观看网站 | 亚洲精品一区二区在线观看 | 天天色天天操天天爽 | 亚洲热久久 | 国产91精品一区二区绿帽 | 97精品国产aⅴ | 国产一区二区在线精品 | 激情视频免费在线 | 国产精品久久久久久久免费观看 | 免费在线观看av网站 | 天天曰视频 | 婷婷激情综合五月天 | 一级一片免费观看 | 九九久久影院 | 亚洲国产精品va在线看黑人动漫 | 天天摸日日摸人人看 | 国产日韩视频在线观看 | 国产高清av免费在线观看 | 日日草天天干 | 日日夜夜天天干 | 久久免费av电影 | 狠狠色伊人亚洲综合网站野外 | 欧美日韩一区二区三区在线免费观看 | 婷婷www| 91精品国产网站 | 久久99亚洲网美利坚合众国 | av电影免费在线 | 亚洲精品视频免费观看 | 欧美精品中文 | av免费黄色 | 天天操天天色天天 | 伊人激情综合 | 狠狠综合 | 免费a v视频 | 国产伦精品一区二区三区免费 | 午夜久久电影网 | 五月亚洲综合 | 日韩精品免费在线视频 | 亚洲国产操 | 粉嫩aⅴ一区二区三区 | 天天干天天操天天爱 | 日日夜夜国产 | 在线 成人 | 成人97人人超碰人人99 | 91高清在线看 | 在线观看视频h | 成人综合免费 | 精品嫩模福利一区二区蜜臀 | 日韩av一区二区在线影视 | 亚洲激情久久 | 成人a大片| 中文字幕乱码在线播放 | 国产伦精品一区二区三区无广告 | 欧美最新另类人妖 | 国产精品毛片一区二区在线 | av黄色免费网站 | 一区二区三区四区精品视频 | 在线观看免费av网 | 国产精品久久久精品 | 色综合久久中文综合久久牛 | 在线成人国产 | 欧美成人xxxxxxxx | 亚洲美女久久 | 在线观看免费一区 | 中文字幕精品视频 | 午夜精品一区二区三区在线视频 | 香蕉在线观看视频 | 国产一区免费在线 | 久久成人午夜 | 国产伦精品一区二区三区无广告 | 精品国产乱码久久久久久1区二区 | 国产精品久久久久久一区二区 | 视频在线91| 欧美精品一二 | 国产欧美在线一区二区三区 | 91桃色在线观看视频 | 国产视频精品视频 | 日韩sese | 中文字幕高清在线 | 亚洲国产播放 | 狠狠躁日日躁 | 91色欧美| 99草视频在线观看 | 亚洲国产wwwccc36天堂 | 国产色在线,com | 免费看的黄网站软件 | 日韩大片免费观看 | 日本精品一区二区在线观看 | 久久精品欧美一区 | 亚洲一区美女视频在线观看免费 | www日韩视频 | 日本乱视频 | 国产精品专区在线 | 国产91精品一区二区麻豆网站 | 国产亚洲免费的视频看 | 国产精品自产拍在线观看蜜 | 97超碰国产精品 | 亚洲伊人网在线观看 | 欧美一区二区三区免费看 | 国产一区二区成人 | 日韩系列在线观看 | 人人爱人人做人人爽 | 国产精品99免费看 | a午夜电影 | 99热都是精品 | 狠狠操导航 | 日韩在线观看视频中文字幕 | 国产录像在线观看 | 精品av在线播放 | 伊人久久在线观看 | 久久久久久久久久电影 | 色婷婷狠狠五月综合天色拍 | 亚洲丁香久久久 | 69精品视频在线观看 | 日日干天天爽 | 91久久爱热色涩涩 | 成人黄色在线看 | 中文字幕在线观看视频一区 | 精品国产99国产精品 | 日韩av成人在线观看 | 精品无人国产偷自产在线 | 久久综合狠狠综合久久综合88 | 狠狠干狠狠久久 | 99热只有精品在线观看 | 欧美日韩在线观看视频 | 在线观看亚洲成人 | 国产99久久久久 | 久久理论电影 | 人人干人人上 | 99久免费精品视频在线观看 | 欧美日韩精品影院 | 香蕉视频免费在线播放 | jizz欧美性9 国产一区高清在线观看 | 99国产视频在线 | 日b视频在线观看网址 | 亚洲天堂网视频 | 免费a级黄色毛片 | 91人人插| 一区二区三区 中文字幕 | 中文字幕日韩伦理 | 成年免费在线视频 | 黄色片免费电影 | 欧美天堂视频在线 | 免费黄色在线网址 | 国产99久久99热这里精品5 | 日韩美女黄色片 | 在线看片成人 | 亚洲激情av | 久久久久久久久免费 | 在线观看精品一区 | 国产美女在线观看 | 国产69精品久久久久99尤 | 国产在线理论片 | 91av视频在线观看免费 | 日韩伦理一区二区三区av在线 | 精品国产诱惑 | 国产精彩视频一区二区 | 久久黄色成人 | 欧美成人亚洲 | 久久综合一本 | 婷婷久久国产 | 天天综合网天天综合色 | 国产在线精| 99国内精品久久久久久久 | 毛片基地黄久久久久久天堂 | 天天色棕合合合合合合 | 狠狠干电影 | 国产精品久久久毛片 | 日韩欧美综合精品 | 国产精品久久久久久久久大全 | 欧美精品久久 | 免费福利影院 | 狠狠干 狠狠操 | 国产免费观看久久 | 国产一级免费av | 一级淫片a | 99视频这里只有 | 欧美日韩另类视频 | 日韩久久久 | 日韩av在线免费看 | 一区二区三区不卡在线 | 国产麻豆电影在线观看 | 久久人操 | www.狠狠操 |