2012-01-16 3 views
-8

일치하는 괄호의 수를 계산하는 프로그램을 작성하고 싶습니다. 누구든지 그것을 쓰는 방법을 알 수 있습니까? 예 : 입력 ((이것은) ((테스트) 출력 = 2일치하는 괄호를 계산하는 Java 프로그램

+3

당신의 "열기"카운터를 감소 및 증가입니까? 문제에 대해 어떻게 생각하십니까? 이 숙제가 있니? – pcalcao

+0

-1, 이미 시도한 코드를 추가 할 수 있습니까? 문자열 문서를 살펴보십시오. – Reddy

+1

커뮤니티의 소스 코드가 필요하지 않습니다. 도움을 요청하지 못할 때 시도하십시오 –

답변

0

으로 반복 문자열의 문자 이상과 개방의 트랙과 닫는 괄호를 유지한다.

하는 방법이있는 String 클래스를 살펴 보자 length을주고 charAt 특정 인덱스를 찾으십시오.

+2

왜 downvote? 이 대답은 내게 맞는 것, 비록 뭔가를 놓칠 수 있습니다 : | – amit

+0

나는 downvoter가 아니지만 질문에 대답하지 않습니다. "Keep track of"의 의미는 무엇입니까? 대답은 다음과 같을 수 있습니다. "반복하고 일치하는 괄호를 계산하십시오."는 많은 도움이되지 않습니다. –

+0

코드 예제를 사용하면 여기에 하향 투표를 피할 수 있습니다. –

0

여는 괄호를 찾으면 스택 위로 밀어 넣으십시오. 닫는 괄호를 만났을 때 하나 끕니다. 문이 끝나면 스택이 비어 있거나 (모든 괄호가 일치 함) 왼쪽에있는 숫자는 닫지 못했던 숫자를 알려줍니다.

+2

더 많은 파싱이 수행되지 않는 한 스택 등을 유지하는 데 별다른 의미가 없습니다. 현재이 요구 사항은 "현재 열린"괄호의 간단한 카운터로 충족 될 수 있습니다. – dty

+0

올바른 것이지만 가능한 문자가 하나만있는 스택은 잔인한 것처럼 보입니다. @dogbane과 같은 카운터는이 스택을보다 효율적으로 모방해야합니다. – amit

+1

"일치하는 paranthesis 수를 계산하는 프로그램을 작성하고 싶습니다."- 더 많은 구문 분석을위한 요구 사항이 없습니다. 나는 동의한다 - 세는 것이 충분할 것이다. 하지만 위에 언급 한 JB Nizet의 결과는 세지 만 스택은 속지 않습니다. 당신의 대답은 어디에 있습니까? 아니면 다른 사람의 답변에 트롤하고 댓글을 달았습니까? – duffymo

5
  • 문자 단위로 반복합니다.
    • 당신 무시하고 계속, 카운터 = 0 <이다 "열기"(당신이 야해 경우 ​​: 당신이 여는 괄호를 찾을 때 닫는 괄호를 찾을 때
    • 는 카운터를
    • 을 "열기"증가 열린 일치하는) 당신의 "열기"만약
    • 없이 가까운 카운터> 0, 지금까지 시도 무엇 "일치"카운터
+0

+1. 마지막으로 간단하고 효율적인 알고리즘입니다. –

관련 문제