【leetcode】脑子打结的题
生活随笔
收集整理的這篇文章主要介紹了
【leetcode】脑子打结的题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
3.?Longest Substring Without Repeating Characters:https://leetcode.com/problems/longest-substring-without-repeating-characters/
容器不熟
?
10.?Regular Expression Matching:https://leetcode.com/problems/regular-expression-matching/
邏輯很亂,情況想不全。
本想用普通方法直接寫出規則,發現卡在樣例:s="aaa", p="a*a" 上不能解決了。
這是卡住的代碼:
class Solution { public:bool isMatch(string s, string p) {int pi = 0, si = 0;for (; si < s.size() && pi < p.size(); ++si){printf("%c,%c\n",s[si],p[pi]);if (s[si] == p[pi] || p[pi] == '.') ++pi;else if (p[pi + 1] == '*') pi += 2;else if (p[pi] == '*' && s[si] != s[si - 1] && p[pi - 1] != '.'){++pi;while (pi < p.size() && s[si] != p[pi] && p[pi] != '.'){++pi;if (pi >= p.size() || p[pi] != '*') return false;else ++pi;}++pi;}}if (si < s.size()) return false;else if ((pi) < p.size()){int tmp = (p.size() - pi - 1) % 2;if (p[pi] == '*'){if (tmp != 0 || !equalEmpty(p.substr(pi + 1))) return false; }else {if (tmp != 0){if (p[pi + 1] != '*') return false;else if (!equalEmpty(p.substr(pi + 2))) return false;}else if (p[pi] != '*' || !equalEmpty(p.substr(pi + 1))) return false;}}return true;}bool equalEmpty(string p){if (p.size() % 2 != 0) return false;for (int i = 0; i < p.size(); ++i){if (p[++i] != '*') return false;}return true;} };法一:遞歸,目前還沒想清楚。
法二:dp,和初始想法有點像
總結
以上是生活随笔為你收集整理的【leetcode】脑子打结的题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乒乓球单循环赛_乒乓球单循环比赛如何计算
- 下一篇: FireFox如何使用扩展