吃菠萝的狼 2024-07-24 10:35 采纳率: 66.7%
浏览 3

c++ T318517 括号序列


题目描述
给你一个括号序列,你可以进行若干次操作,每次操作可以交换某相邻两个字符

问你最少多少次操作,可以使得操作完以后的序列是一个合法的括号序列

合法括号序列的定义就是常见的定义:

空序列是合法括号序列。
如果 A 是合法括号序列,则 (A) 是合法括号序列。
如果 A,B 是合法括号序列,则 AB 是合法括号序列。
输入格式
输入初始的序列

输出格式
输出最小操作次数

输入输出样例
输入 #1复制
))((
输出 #1复制
3
说明/提示
序列长度不超过
6
10
6
10

保证初始序列左右括号数量相等,所以一定有解。

提示

括号序列可以理解成一个栈的操作,左括号表示一个元素入栈,右括号表示弹出栈顶,括号序列合法当且仅当,不能在任何时候对一个空栈进行弹出栈顶操作,也就是说,右括号不能多于左括号


#include <iostream>
using namespace std;
int main() {
    return 0;
}


  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-07-24 10:35
    关注

    以下内容由AIGC及阿里嘎多学长共同生成、有用望采纳:


    您提供的代码框架是一个很好的起点,但需要进行一些调整以解决这个问题。下面是一个完整的C++解决方案,它将解决括号序列合法化的问题。

    #include <iostream>
    #include <string>
    #include <stack>
    using namespace std;
    
    int minSwaps(string s) {
        int ans = 0;
        stack<int> st;
        int rightCount = 0;
    
        for (int i = 0; i < s.size(); ++i) {
            if (s[i] == '(') {
                // 如果是左括号,入栈
                st.push(i);
            } else {
                // 如果是右括号,尝试出栈
                if (!st.empty()) {
                    st.pop();
                } else {
                    // 如果栈为空,记录右括号的数量
                    rightCount++;
                }
            }
        }
    
        // 需要交换的最小次数是右括号的数量
        return rightCount;
    }
    
    int main() {
        string s;
        cin >> s;
        cout << minSwaps(s) << endl;
        return 0;
    }
    

    这段代码使用了一个栈来模拟括号的入栈和出栈操作。对于每个遇到的左括号,我们将其索引入栈。对于每个遇到的右括号,我们尝试从栈中弹出一个元素。如果栈为空,这意味着我们需要交换一个右括号和一个后续的左括号,以便使右括号能够正确地出栈。我们记录下这种情况发生的次数,这将是我们需要的最小交换次数。

    请注意,这个解决方案假设序列中的括号都是成对出现的,并且输入的序列长度不超过6,正如题目所保证的。这个假设确保了我们总是可以找到足够的左括号来与右括号配对,从而实现合法的括号序列。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月24日

悬赏问题

  • ¥15 TeleScan不能修改bar
  • ¥100 请问我基于逐飞库写的这个有关于mp u6050传感器的函数,为什么输出的值是固定的?
  • ¥15 hadoop中启动hive报错如下怎么解决
  • ¥15 如何优化QWebEngineView 加载url的速度
  • ¥15 关于#hadoop#的问题,请各位专家解答!
  • ¥15 如何批量抓取网站信息
  • ¥15 Spring Boot离线人脸识别
  • ¥15 使用Ant Design Pro vue的时候,使用环境变量的时候,构建报错是什么原因
  • ¥15 NRF24L01能发送但是不能接收
  • ¥15 想问一下这种情况怎么解决呢(关键词-file)