1、判断字符串中匹配的括号数
#include <iostream>
#include <stack>
using namespace std;
int main(int argc, char const *argv[])
{
string leftparenthese = "([{<";//保存左括号列表
string rightparenthese = ")]}>";//保存右括号列表
stack<char> parenthese;
string str;
cin >> str;
int flag = -1;
for (int i = 0; i < str.length(); i++)
{
if (leftparenthese.find(str[i]) != string::npos)//左括号直接入栈
parenthese.push(str[i]);
else if (rightparenthese.find(str[i]) != string::npos)//如果遇到右括号
{
//检查是否与栈顶栈顶符号匹配
if (!parenthese.empty() && leftparenthese.find(parenthese.top()) == rightparenthese.find(str[i]))
parenthese.pop();//如果匹配则删除栈顶符号
else//不匹配则标记并退出循序
{
flag = i;
break;
}
}
}
//根据比较结果判定是否匹配
if (!parenthese.empty() || flag >= 0)
cout << "unmatch" << endl;
else
cout << "perfect matched" << endl;
return 0;
}
- C++中str.size(),str(len),str.length()求字符串数组的长度。
- C++中find方法,find方法返回一个名为 string::npos 的特殊值,说明查找没有匹配。
2 找到两个数组的交集
例如:
arr1[2,4,5,5]
arr2[4,5]
想法1:分别排序,然后给两个数组分别一个指针进行比较。时间复杂度: