4.14日华为机试复盘

给出一个字符串s(仅包含小写英文字母和括号),请你按照从内层到外层的顺序,逐层反转每对匹配括号内包含的字符串,并返回最终的结果。
输入描述:输入为一行带有括号的字符串(只包含英文小写字母和左右小括号,且左右括号是成对的)。
输出描述:反转括号内字符串并输出(只有英文小写字母)。

(u(love)i) 经过内层括号翻转变成(uevoli),再经过翻转得到iloveu。
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<cmath>
#include<unordered_set>
#include<stack>
using namespace std;

 int main()
 {
  string s{"(U(LOVE)I)"};
  string res;
  stack<string>stk;
  string word="";
  for(char c:s)
  {
    if(c=='(')
    {
      stk.push(word); //U在栈中
      word="";
    }else if(c==')')
    {
      reverse(word.begin(),word.end());//恢复LOVE 
      word=stk.top()+word;//UEVOL//LOVEU
      stk.pop();//最上边那个用过了,删除

    }else
    {
      word+=c;
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值