搜狐

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:分别排序,然后给两个数组分别一个指针进行比较。时间复杂度:




最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容