Leetcode 题目整理-5 Valid Parentheses & Merge Two Sorted Lists
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的更多相关文章
- 【LeetCode】【数组归并】Merge k Sorted Lists
描述 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity ...
- 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 ...
- 乘风破浪:LeetCode真题_032_Longest Valid Parentheses
乘风破浪:LeetCode真题_032_Longest Valid Parentheses 一.前言 这也是非常有意思的一个题目,我们之前已经遇到过两个这种括号的题目了,基本上都要用到堆栈来解决,这次 ...
- [LeetCode] Merge k Sorted Lists 合并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 这 ...
- [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 ...
- 蜗牛慢慢爬 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 ...
- LeetCode 23 Merge k Sorted Lists(合并k个有序链表)
题目链接: https://leetcode.com/problems/merge-k-sorted-lists/?tab=Description Problem: 给出k个有序的list, 将其进行 ...
- Merge Two Sorted Lists - LeetCode
目录 题目链接 注意点 解法 小结 题目链接 Merge Two Sorted Lists - LeetCode 注意点 两个链表长度可能不一致 解法 解法一:先比较两个链表长度一致的部分,多余的部分 ...
- [Leetcode Week4]Merge Two Sorted Lists
Merge Two Sorted Lists题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/merge-two-sorted-lists/descrip ...
随机推荐
- 20191017-6 alpha week 2/2 Scrum立会报告+燃尽图 05
此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/9802 小组名称:“组长”组 组长:杨天宇 组员:魏新,罗杨美慧,王歆瑶,徐 ...
- 【python测试开发栈】帮你总结python random模块高频使用方法
随机数据在平时写python脚本时会经常被用到,比如随机生成0和1来控制逻辑.或者从列表中随机选择一个元素(其实抽奖程序也类似,就是从公司所有人中随机选择中奖用户)等等.这篇文章,就帮大家整理在pyt ...
- 笔记软件->"Typora"
笔记软件->"Typora" 1 下载地址 www.typora.io 2 傻瓜安装后添加自定义样式 由于用户目录不同Users为当前系统用户名字 打开C:\Users\Ad ...
- Python 打包的现状:包的三种类型
英文 | The state of Python Packaging[1] 原作 | BERNAT GABOR 译者 | 豌豆花下猫 声明 :本文获得原作者授权翻译,转载请保留原文出处,请勿用于商业或 ...
- Java锁对象和条件对象的使用
锁对象 临界区:临界区是一个特殊的代码段,该代码段访问某种特殊的公共资源,该资源同一时间只允许一个线程使用. Java中可以使用锁对象创造一个临界区: myLock.lock(); try { 关键代 ...
- linux Nginx-1.10.2 安装部署教程
一.下载Nginx以及依赖组件[root@localhost src]# wget http://nginx.org/download/nginx-1.10.2.tar.gz [root@localh ...
- [02]java数据类型和运算符等知识
00 Java中的注释 为了方便程序的阅读,Java语言允许程序员在程序中写上一些说明性的文字,用来提高程序的可读性,这些文字性的说明就称为注释.注释不会出现在字节码文件中,即Java编译器编译时会跳 ...
- 1070 结绳 (25 分)C语言
给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连.每次串连后,原来两段绳子的长度 ...
- 微服务统计,分析,图表,监控一体化的HttpReports项目在.Net Core 中的使用
简单介绍 HttpReports 是 .Net Core 下的一个Web项目, 适用于WebAPI,Ocelot网关应用,MVC项目,非常适合针对微服务应用使用,通过中间件的形式集成到您的项目中,可以 ...
- java 多线程 快速入门
------------恢复内容开始------------ java 多线程 快速入门 1. 进程和线程 什么是进程? 进程是正在运行的程序它是线程的集合 进程中一定有一个主线程 一个操作系统可以有 ...