20. Valid Parentheses

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

注:给出一些有括号组成的字符串,判断这些字符串是否合法。不知道这里是否考虑空格的因素还是所有的字符都是括号,还有就是应该考虑嵌套的格式,如(){[]}个人理解应该是合法的。

代码如下:

bool Solution::isValid(string s)
{
bool flag{ };
if (s.size() == )
{
return flag = ;
}
map<char, char> side;
side['('] = 'l';side['{'] = 'l';side['['] = 'l';side[')'] = 'r';side['}'] = 'r';side[']'] = 'r';
map<char, char> group;
group[')'] = '('; group['}'] = '{'; group[']'] = '[';//通过右括号索引左括号
for (string::iterator s_i = s.begin(); s_i != s.end(); )
{
if (side[*s_i] == 'r')//找第一次出现右括号的点
{
if (s_i == s.begin())
{
return flag = ;//如果开始就出现了右括号,那是非法的,返回即可
}
if (group[*s_i] == *(s_i - ))
{
s.erase(s_i - );
s.erase(s_i - );//相等说明是对的,那就把正确的这一对儿删除掉,指针要向前移动一位
if (s.size() == )
{
return flag=;//如果删完没有了,就返回认为是正确的
}
else{
s_i--;
}
}
else
{
return flag = ;//如果不相等说明排列有问题,返回
}
}
else
{
s_i++;//如果出现的不是右括号就移动到下一个
}
} return flag;//如果所有的都是左括号,那么最后将在这里返回 0
}

21. Merge Two Sorted Lists

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

注:合并两个有序链表,并且不能丢弃其中任何一个node。

解:代码过程中出现一个问题就是对空链表如何处理,第二个问题就是竟然要排序,又重新添加了一遍。

ListNode* Solution::mergeTwoLists(ListNode* l1, ListNode* l2)
{
ListNode *head = new ListNode();//这是要返回的那个值
ListNode *temp;
temp = head;
while (l1 != NULL || l2 != NULL)
{
//只要有一个不为零就执行下列程序
if (l1 == NULL)
{
temp->next = l2;
l2 = l2->next;
}
else
{
if (l2 == NULL)
{
temp->next = l1;
l1 = l1->next;
}
else
{//如果都不是空的
if (l1->val > l2->val)
{//取小的放在前边
temp->next = l2;
l2 = l2->next;
}
else{
temp->next = l1;
l1 = l1->next;
}
}
}
temp = temp->next;//每次都要有两个指针同时前进
}
//把刚才建立的头删掉 return head->next;
}

Leetcode 题目整理-5 Valid Parentheses & Merge Two Sorted Lists的更多相关文章

  1. 【LeetCode】【数组归并】Merge k Sorted Lists

    描述 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity ...

  2. Leetcode练习题21. Merge Two Sorted Lists

    题目描述(easy) Merge Two Sorted Lists Merge two sorted linked lists and return it as a new list. The new ...

  3. 乘风破浪:LeetCode真题_032_Longest Valid Parentheses

    乘风破浪:LeetCode真题_032_Longest Valid Parentheses 一.前言 这也是非常有意思的一个题目,我们之前已经遇到过两个这种括号的题目了,基本上都要用到堆栈来解决,这次 ...

  4. [LeetCode] Merge k Sorted Lists 合并k个有序链表

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 这 ...

  5. [LeetCode] Merge Two Sorted Lists 混合插入有序链表

    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...

  6. 蜗牛慢慢爬 LeetCode 23. Merge k Sorted Lists [Difficulty: Hard]

    题目 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity ...

  7. LeetCode 23 Merge k Sorted Lists(合并k个有序链表)

    题目链接: https://leetcode.com/problems/merge-k-sorted-lists/?tab=Description Problem: 给出k个有序的list, 将其进行 ...

  8. Merge Two Sorted Lists - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Merge Two Sorted Lists - LeetCode 注意点 两个链表长度可能不一致 解法 解法一:先比较两个链表长度一致的部分,多余的部分 ...

  9. [Leetcode Week4]Merge Two Sorted Lists

    Merge Two Sorted Lists题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/merge-two-sorted-lists/descrip ...

随机推荐

  1. [工具] Git版本管理(三)(工作流)

    一.冲突解决 Beyond Compare软件 下载BCompare软件,并安装. 删除安装目录下的BCUnrar.dll文件. 使用码: w4G-in5u3SH75RoB3VZIX8htiZgw4E ...

  2. VC/c++版本获取现行时间戳精确到毫秒

    时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数.通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完 ...

  3. C++简单实现Log日志类轻量级支持格式化输出变量

    CLog 头 代码很简单 如果需要的直接Ctrl+C  ----Ctrl+V 即可 #ifndef __CLOG__ #define __CLOG__ #include <windows.h&g ...

  4. 【题解】SDOI2015序列统计

    [题解]SDOI2015序列统计 来自永不AFO的YYB的推荐 这里是乘积,比较麻烦,不过由于给定的序列膜数是个小质数,所以可以\(O(m^2\log m)\)找原跟(实际上不需要这么多). 乘积有点 ...

  5. 洛谷$P2605\ [ZJOI2010]$基站选址 线段树优化$dp$

    正解:线段树优化$dp$ 解题报告: 传送门$QwQ$ 难受阿,,,本来想做考试题的,我还造了个精妙无比的题面,然后今天讲$dp$的时候被讲到了$kk$ 先考虑暴力$dp$?就设$f_{i,j}$表示 ...

  6. 10.Python中print函数中中逗号和加号的区别

    先看看print中逗号和加号分别打印出来的效果.. 这里以Python3为例 1 print("hello" + "world") helloworld 1 p ...

  7. [ASP.NET Core 3框架揭秘] Options[2]: 配置选项的正确使用方式[下篇]

    四.直接初始化Options对象 前面演示的几个实例具有一个共同的特征,即都采用配置系统来提供绑定Options对象的原始数据,实际上,Options框架具有一个完全独立的模型,可以称为Options ...

  8. a标签属性href值为#和javasrcript:void(0)的区别

    当我们需要一个空链接时,通常有两种方法: <a href="#">这个一个空链接</a> <a href="javascript:void( ...

  9. Java类成员之构造器

    构造器含义: 是指使得JVM在构造对象的时候,帮助进行成员变量的初始化的方法. 构造器(构造方法)格式: 1.对于构造方法而言,方法的名称是固定的,和类名相同. 2.对于构造方法而言,它没有返回值,而 ...

  10. Activiti CamelTask(骆驼任务)

    Activiti CamelTask(骆驼任务) 作者:Jesai 人生想讲个不成熟的建议 前言: Camel任务可以从Camel发送和介绍消息,由此强化了activiti的集成功能. 注意camel ...