給定乙個字串,判斷其是否為合法的正規表示式。
乙個正規表示式定義為:
1:0是正規表示式,1也是正規表示式。
2:p和q都是正規表示式,則pq是正規表示式。
3:p是正規表示式,則(p)是正規表示式
4:p是正規表示式,則p*也是正規表示式
5:p和q都是正規表示式,則p|q是正規表示式。
輸入 輸入包含多組資料。
每組資料為一行乙個字串,長度不超過100。
輸出 對於每組資料,如果輸入是合法的正規表示式,輸出yes,否則輸出no。
樣例輸入
010101101*
(11|0*)*
)*111
樣例輸出
yes
yes
no設dp[i][j]為將區間i到j是否合法,顯然若區間i到j合法則有dp[i][j]為true,初始狀態若s[i]為』0』或』1』,則dp[i][i]為true,否則為false,然後列舉長度進行區間dp,對於五個定義,定義1用來做上述初始化,定義2和5是一類,需要列舉分割點,若區間內不存在』|』,則用定義2,否則用定義5;定義3和4是一類,直接判斷即可,定義3若括號內的是合法的則加上括號也合法,定義4若dp[i][j - 1]合法,加乙個』*』也合法,最後判斷dp[0][len - 1]是否為true
public
class uku1
}//區間的長度
for(int size = 1; size < len; size++)
if(s.charat(j) == '*' && dp[i][j-1])
if(dp[i][j])
continue;
for(int k = i; k < j; k++) }}
for(int i = 0; i < len; i++)
system.out.println();
}return dp[0][len-1];
}public
static
void
main(string args)
}
正規表示式判斷
public class test 校驗輸入的qq號碼是否符合規則 param qq return public static boolean checkqq1 string qq 如果qq號碼中有任何一位不是數字,就直接返回false for int i 0 i qq.length i 如果首位是...
javascript正規表示式判斷
整數格式 patternsdict.long 0 1 9 d 小數格式 patternsdict.double 0 1 9 d d 數值格式 patternsdict.number 0 1 9 d 0 1 9 d d 自然數 patternsdict.positive 1 9 d 負整數 patte...
JS正規表示式判斷
是否帶有小數 function isdecimal strvalue 校驗是否中文名稱組成 function ischina str 定義驗證表示式 return reg.test str 進行驗證 校驗是否全由8位數字組成 function isstudentno str 定義驗證表示式 retu...