摘要: 有一定的难度。用堆栈记录下所有左符的位置,用变量记录下孤立右符的位置。 int longestValidParentheses(const string& s) { stack<int>lefts;//将左符对应的位置保留 int last;//记录孤立的右符位置 int max_len = 0;/ 阅读全文
posted @ 2016-05-26 16:08 牧马人夏峥 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 做法很巧妙。分成左右两个对应的部分,遇到左半部分则入栈,遇到右半部分则判断对应的左半部分是否在栈顶。注意最后要判断堆栈是否为空。 bool isValid(const string& s) { string left = "([{"; string right = ")]}"; stack<char 阅读全文
posted @ 2016-05-26 15:34 牧马人夏峥 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 扫描每个WORD的长度并记录即可。 int lengthOfLast(const char *s) { //扫描统计每个word的长度 int len = 0; while (*s) { if (*s++ != ' ')//注意不管是否满足s都要++ len++; else if (*s && *s 阅读全文
posted @ 2016-05-26 09:24 牧马人夏峥 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 主要看//之间的内容:如果是仍是/,或者是.,则忽略;如果是..,则弹出;否则压入堆栈。最后根据堆栈的内容进行输出。 string simplifyPath(string const& path) { vector<string> dirs; for (auto i = path.begin(); 阅读全文
posted @ 2016-05-26 09:09 牧马人夏峥 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 回文构词法,将字母顺序打乱。可将字母重新排序,若它们相等,则属于同一组anagrams。 可通过hashmap来做,将排序后的字母作为key。注意后面取hashmap值时的做法。 vector<string> anagrams(vector<string> &strs) { unordered_ma 阅读全文
posted @ 2016-05-26 08:28 牧马人夏峥 阅读(106) 评论(0) 推荐(0) 编辑