关于leetcode上关于c++ STL 的几道题

1. Valid Parentheses

用来判断字符串中的括号是否合法的一道题。注意输入只会有 (, ) , {, }, [, ]这么几种情况。

合法的括号是以一定的顺序进行匹配的一些。比如:"()[]‘, 或者"([])"等,而以"([)]"这种为类型的表示是有错误的。

很显然用“stack”来作为数据结构来实现这道题,每一次插入一个元素的时候都进行匹配,如果匹配成功了,那么就将栈顶元素出栈,继续下一个元素,

否则直接将这个元素入栈。最后判断栈是否为空。

整个代码的实现如下,可能不是很简洁,但是思路很清晰:

/*--------------------------valid parentheses--------------------------------------------------*/
//用stack来实现。
//By Lingtao 2015/04/20
#include <stack>
#include <vector>
bool isValid(string s)
{
	if (s.size() % 2 != 0)
		return false;
	if (s.empty())
		return true;
	stack<char>st;
	char top;
	for (string::iterator iter = s.begin();
		iter != s.end(); iter++)
	{
		if (st.empty())
		{
			st.push(*iter);
			continue;
		}

		top = st.top();
		switch (top)
		{
		case'(':
			if (*iter == ')')
				st.pop();
			else
				st.push(*iter);
			break;
		case'[':
			if (*iter == ']')
				st.pop();

			else
				st.push(*iter);
			break;
		case'{':
			if (*iter == '}')
				st.pop();
			else
				st.push(*iter);
			break;
		default:
			return false;
			break;
		}
	}

	if (st.empty())
		return true;
	else
		return false;
}

未完待续。

时间: 2024-11-03 21:17:40

关于leetcode上关于c++ STL 的几道题的相关文章

leetcode 上的 bash 程序

*/--> pre.src {background-color: Black; color: White;} leetcode 上的 bash 程序 Table of Contents Tenth Line Transpose File Valid Phone Numbers Word Frequency 注: 以下程序大部份从 leetcode 的讨论上看来的... Tenth Line How would you print just the 10th line of a file? For

同一个程序eclipse上运行的结果与leetcode上运行的不一样

题目为leetcode第一道题Two Sum,以下为java写的代码: 当输入数据target=0,  nums=[0,4,3,0]时,eclipse上运行的结果与leetcode上运行的不同 1.eclipse下的运行结果: 2.leetcode下的运行结果: 把算法仔细理了一遍觉得并没有错 ,写的第一个leetcode卡在这了,好纠结!会不会是两者编译器差异造成的?以下贴出完整代码:

动态规划第五讲——leetcode上的题目动态规划汇总(上)

本节,我们将对leetcode上有关DP问题的题目做一个汇总和分析. 1.题目来源 Interleaving String 动态规划 二叉树 Unique Binary Search Trees 动态规划 二叉树 Word Break 动态规划 N/A Word Break II 动态规划 N/A Palindrome Partitioning 动态规划 N/A Palindrome Partitioning II 动态规划 N/A Triangle 动态规划 N/A Distinct Subs

关于Leetcode上二叉树的算法总结

二叉树,结构很简单,只是比单链表复杂了那么一丢丢而已.我们先来看看它们结点上的差异: /* 单链表的结构 */ struct SingleList{ int element; struct SingleList *next; }; /* 二叉树的结构 */ struct BinaryTree{ int element; struct BinaryTree *left; struct BinaryTree *right; }; 根据以上两个结构,我们不难发现,单链表的结点只有一个指向下一结点的指针

关于leetcode上两数之和的思考

今天在leetcode上完成这道题目时: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1] 初步代码为 1 class Solution { 2 public int[] t

leetcode上面的一个题目,求Largest Number

原题如下: Given a list of non negative integers, arrange them such that they form the largest number. For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330. Note: The result may be very large, so you need to return a string instead o

动态规划第六讲——leetcode上的动态规划汇总(下)

接下来的几道题,都是有关路径问题,这可以说是DP问题的一种典型应用.路径有一个维度的:也有两个维度的. Eg10:Climbing Stairs 这道题目比较简单,重在分析思路. Eg11:Minimum Path Sum 分析:略 class Solution { public: int minPathSum(vector<vector<int> > &grid) { int row, col; row=grid.size(); if(row==0) return -1;

leetcode 上的Counting Bits 总结

最近准备刷 leetcode  做到了一个关于位运算的题记下方法 int cunt = 0; while(temp) { temp = temp&(temp - 1);  //把二进制最左边那个1变为零 count++;   //统计1的个数 } 同理把位二进制坐左边那个0变为1 就可以  temp = temp|(temp + 1)

Leetcode 66 Plus One STL

题意让大数加1 我的做法是先让个位+1,再倒置digits,然后进位,最后倒置digits,得到答案. 1 class Solution { 2 public: 3 vector<int> plusOne(vector<int> &digits) { 4 digits[digits.size() -1]++; //个位+1 5 reverse(digits.begin(),digits.end());//倒置digits 6 for(vector<int>::s