zoukankan      html  css  js  c++  java
  • 找出最长的有效括号内子括号的长度

    CSDN编程挑战里的题目

    给定只包含括号字符'('和 ')''的字符串,请找出最长的有效括号内子括号的长度。
    举几个例子如下: 例如对于"( ()",最长的有效的括号中的子字符串是"()" ,有效
    双括号数1个,故它的长度为 2。 再比如对于字符串") () () )",其中最长的有效
    的括号中的子字符串是"() ()",有效双括号数2个,故它的长度为4。 再比如对于
    "( () () )",它的长度为6。 换言之,便是有效双括号"()"数的两倍。 给
    定函数原型int longestValidParentheses(string s),请完成此函数,实现上述功能。

    我提交的程序CSDN反馈是有问题,但又没给说具体的出错测试用例.所以我也没有再进一步调试,感觉我的代码没问题.

     1 #include <stdio.h>
     2 #include <iostream>
     3 #include <string>
     4 
     5 #include <cmath>
     6 #include <cfloat>
     7 #include <cstring>
     8 #include <cstdio>
     9 
    10 int longestValidParentheses(const char* s)
    11 {
    12     int len = strlen(s);
    13     int leftBracket[256];
    14     memset(leftBracket, 0, sizeof(leftBracket));
    15     int rst = 0;
    16     int lastStart = 65535;
    17     int leftBracketNum = 0;
    18     for (int i = 0; i < len; i++)
    19     {
    20         if (s[i] == '(')
    21         {
    22             leftBracket[leftBracketNum] = i;
    23             leftBracketNum++;
    24         }
    25         else if (s[i] == ')')
    26         {
    27             if (leftBracketNum)
    28             {
    29                 leftBracketNum--;
    30                 if (leftBracket[leftBracketNum] < lastStart)
    31                 {
    32                     rst = i - leftBracket[leftBracketNum] + 1;
    33                     lastStart = leftBracket[leftBracketNum];
    34                 }
    35                 else
    36                 {
    37                     rst = i - lastStart + 1;
    38                 }
    39             }
    40             else
    41             {
    42                 lastStart = 65535;
    43             }
    44         }
    45     }
    46 
    47     return rst;
    48 }
  • 相关阅读:
    安卓AlertDialog四种对话框的最科学编写用法
    sklearn实现逻辑回归
    评估算法的性能
    技术创业浅聊:什么是企业所取得的经济效果
    每天一个linux命令:cat 命令
    每天一个linux命令:mv命令
    洞悉linux下的Netfilter&iptables:什么是Netfilter?
    【苏勇老师Linux 入门笔记】网络基础
    每天一个linux命令:mkdir命令
    每天一个linux命令:cd命令
  • 原文地址:https://www.cnblogs.com/WhyEngine/p/3520569.html
Copyright © 2011-2022 走看看