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