요구 사항 :
단지 주어진 포함 '('
, ')'
, '{'
, '}'
, '['
, ']'
문자열, 그것은 문자열이 유효한지 여부를 결정합니다.
유효한 문자열을 충족해야합니다 :
- 왼쪽 브래킷은 동일한 유형의 닫는 괄호에 의해 폐쇄해야합니다.
- 왼쪽 괄호가 올바른 순서로 닫아야합니다.
빈 문자열을 참고 유효한 문자열로 간주 될 수있다.
다음과 같이 코드입니다 :
공용 정적 BOOL IsValiad ( 문자열 들) { 스택 < 문자열 > 스택 = 새로운 스택 < 문자열 > (); // 创建一个字符串的栈 사전 < 문자열 , 문자열 > DIC = 새로운 사전 < 문자열 , 문자열 > (); dic.Add ( " ( " , " ) " ); dic.Add ( " [ " , " ] " dic.Add ( " { " , " } " ); 경우 ( 문자열 .IsNullOrEmpty (들)) 반환 사실 ; 위한 ( int로 I = 0 ; i가 s.Length를 <; 내가 ++ ) { 경우 (S [I] == ' ( ' ||의 S [I] == ' [ ' ||의 S [I] == ' { ' ) { stack.Push (S [I]로 .toString ()); } 다른 { 경우 (stack.Count의 == 0 ) 돌려 거짓 ; 문자열 기호 = stack.Pop (); 만약 (! DIC [기호]가 S [I]로 .toString ()) 반환 거짓 ; } } 반환 stack.Count의 == 0 ? 사실 : 거짓 ; }
코드 분석 :
1. 스택에 왼쪽으로하면 왼쪽 괄호 괄호가 발생
스택의 오른쪽 상단 2. 발생 소자 브래킷 팝업 듯하고 우측 브래킷 현재 등가 상단 요소 바로 괄호 대응 여부를 결정된다
3. 극단적 인 경우, 모든 왼쪽 또는 모든 권리 심볼 기호 문자가있는 경우. 두 경우는 스택의 모든 요소가 올바른 문자열 데이터 스택 팝업 될 것인지를 결정함으로써 결정될 수있다