搜狐

1、判断字符串中匹配的括号数

 #include 
    #include 
    using namespace std;

    int main(int argc, char const *argv[])
    {
        string leftparenthese = "([{<";//保存左括号列表
        string rightparenthese = ")]}>";//保存右括号列表
        stack 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:分别排序,然后给两个数组分别一个指针进行比较。时间复杂度:




你可能感兴趣的:(搜狐)