2023 oppo笔试题 0411

笔试时间:2023年4月11日 春招实习

备注:第二题暂未有题解

第一题

题目:最短的括号字符串

小欧拿到了一个只包含'('和')'的字符串,她有以下两种操作:

1、用"("代替对括号:"()”

2、用")"代替对括号:"()"。

请注意,只有相邻的括号字符才可以操作。小欧想知道,若干次操作以后,该字符串的最短长度是多少?

输入描述

一个只包含’('和')'两种字符的字符串。长度不超过200000。

输出描述

一个整数,代表若干次操作后,字符串的最短长度。

样例输入

示例1:()

示例2: )(

样例输出

示例1:1

示例2:2

参考题解

利用栈的特性解决。

C++:[此代码未进行大量数据的测试,仅供参考]

#include <iostream>
#include <stack>
using namespace std;

int main() {
    string s;
    cin >> s;
    stack<char> st;

    for (char c : s) {
        bool flag = false;
        while (!st.empty() && c == ')' && st.top() == '(') {
            st.pop();
            flag = true;
        }
        if (flag) {
            st.push('(');
        } else {
            st.push(c);
        }
    }

    cout << st.size() << endl;

    return 0;
}

Java:[此代码未进行大量数据的测试,仅供参考]

import j

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2023 秋招笔试题汇总解析 文章被收录于专栏

2023秋招各大笔试题汇总,c++,java,python多种语言分析,解答。

全部评论
大佬,好排列有js的嘛
1 回复 分享
发布于 2024-08-11 09:21 江苏
public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String s = in.nextLine().trim(); Stack<character> stk = new Stack<>(); for(int i=0; i</character>
点赞 回复 分享
发布于 06-17 09:42 广东
只需要从前向后找到第一个(, 并且从后向前找到第一个),两个中间的所有括号都会被压缩为1个 class My_Resolve2: def __init__(self, line): self.line = line def get_rst(self): l = len(self.line) l_idx = self.line.find('(') r_idx = self.line.rfind(')') if l_idx == -1 or r_idx == -1: return l if r_idx < l_idx : return l skip = r_idx - l_idx return l - skip
点赞 回复 分享
发布于 04-28 20:51 陕西
好排列没题解,只有一道题的题解,bro们别被骗了
点赞 回复 分享
发布于 2024-10-19 20:04 江苏

相关推荐

点赞 评论 收藏
分享
评论
1
12
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务