[藍(lán)橋杯]正則問題

問題 1887: [藍(lán)橋杯][2017年第八屆真題]正則問題

題目描述

考慮一種簡(jiǎn)單的正則表達(dá)式:
只由 x ( ) | 組成的正則表達(dá)式。
小明想求出這個(gè)正則表達(dá)式能接受的最長(zhǎng)字符串的長(zhǎng)度。

例如 ((xx|xxx)x|(x|xx))xx 能接受的最長(zhǎng)字符串是: xxxxxx,長(zhǎng)度是6。

輸入

一個(gè)由x()|組成的正則表達(dá)式。輸入長(zhǎng)度不超過100,保證合法。

輸出

這個(gè)正則表達(dá)式能接受的最長(zhǎng)字符串的長(zhǎng)度。

樣例輸入

((xx|xxx)x|(x|xx))xx

樣例輸出

6

( (xx|xxx) x | (x|xx) ) xx 能接受的最長(zhǎng)字符串是: xxxxxx,長(zhǎng)度是6。

((2|3)1|(1|2))2

2|3

( 進(jìn)

遇到x ++

遇到|判斷

遇到)后面的x +

遇到| 再判斷

dfs方法:

package 字符串;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * User: 76147
 * Date: 2020-01-29
 * Time: 19:32
 * Description:
 */
public class 正則問題 {

    private static int p;
    private static char a[];

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String str = sc.next();
            a = str.toCharArray();
            int res = dfs();
            System.out.println(res);
        }
    }

    private static int dfs() {
        int ans = 0;
        int result = 0;
        int len = a.length;
        while (p < len) {
            if (a[p] == 'x') {
                p++;
                ans++;
            } else if (a[p] == '(') {
                p++;
                ans = ans + dfs();
            } else if (a[p] == ')') {
                p++;
                break;
            } else {
                p++;
                result = Math.max(result, ans);
                ans = 0;
            }
        }
        result = Math.max(result, ans);
        return result;
    }

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 描述:正則問題 考慮一種簡(jiǎn)單的正則表達(dá)式:只由 x ( ) | 組成的正則表達(dá)式。小明想求出這個(gè)正則表達(dá)式能接受的...
    elijahzheng閱讀 579評(píng)論 0 0
  • 正則表達(dá)式到底是什么東西?字符是計(jì)算機(jī)軟件處理文字時(shí)最基本的單位,可能是字母,數(shù)字,標(biāo)點(diǎn)符號(hào),空格,換行符,漢字等...
    獅子挽歌閱讀 2,287評(píng)論 0 9
  • 本文譯自 制作正則引擎的作者 Jan Goyvaerts 為工具 RegexBuddy 寫的教程版權(quán)歸原作者所有注...
    極客圈閱讀 3,407評(píng)論 0 25
  • http://www.jb51.net/tools/zhengze.html 正則表達(dá)式30分鐘入門教程 版本:v...
    nullleaf閱讀 664評(píng)論 0 2
  • 注:本篇文章只為方便查看,特此保留,如有冒犯,敬請(qǐng)諒解?。。?本文目標(biāo) 30分鐘內(nèi)讓你明白正則表達(dá)式是什么,并對(duì)它...
    阿杰Alex閱讀 1,565評(píng)論 0 10

友情鏈接更多精彩內(nèi)容