2012-11-18 2 views
0

나는 자연수가 포함 된 String을 가지며 그 사이에 (, -) 또는 (,)와 같은 패턴이 있습니다. while - condition을 사용하면 주어진 Strings에 주어진 윈도우 크기만큼 숫자가 적은지 확인합니다. 5.StackOverflow 큰 문자열을 정규식과 일치 시키려고 시도하는 동안 오류가 발생했습니다.

조건은 다음과 같습니다

while(discretizedTs.substring(lagWindowStart).matches("(-?,?\\d+,){5,}")) { 
} 

을 lagWindowStart가 다음 번호 또는 인덱스로 이동합니다 경우 (-) 패턴. 작은 문자열의 경우이 정규 표현식이 제대로 작동합니다 (테스트까지). 내 문제는, 큰 문자열 (그리고 나는 매우 큰 문자열 normaly 처리해야)이 정규 표현식은 SOF를 일으켰습니다. 예를 들어 문자열에 17k 개 이상의 문자가 포함 된 경우에 발생합니다.

일치시킬 문자열의 길이에 제한이 있습니까? 또는 매칭을 완료해야하는 시간 제한? 정규식없이 주어진 문제를 해결하는 방법을 알지 못했습니다.

난 당신이 어떤 아이디어가 희망 는 .. 최고의

+0

언어는 무엇입니까? 자바 같아? (좀 더 많은 코드를 게시하면 도움이 될 것입니다.) 입력에 공백이 있으면 공백으로 입력을 나눌 수 있습니다. 정규식은 나머지 문자와 아무 관계가 없으므로 입력을'[^ -, \ d] +'로 나눌 수 있습니다. – nhahtdh

+0

그냥 루프를 쓸 수 없습니까? – nhahtdh

+0

예, 자바입니다. 게시 할 코드 부분을 더 이상 알지 못합니다. "1,1,3,4,3, -, 4,5,4,3,4, -, 43,4,4,6, - "등등. 나는 창 던져 그것을 던져 돌봐야한다, 그 문자열 최소 n 개의 숫자가 포함되어 있어야합니다. 여기서 n은 창 크기입니다. (첫 번째 반복) "10,1,3,4,3, -, 4,5,4,3,4, -, 43,4,4,6, -" 적어도 n 개의 숫자를 포함하고 (두번째 ..) "1,3,4,3, -, 4,5,4,3,4, -, 43,4,4,6, -" (while, ###, 여기에 하나의 숫자가있다.) –

답변

1

기본 JVM 스택 크기가 다소 작은 주셔서 감사합니다. -Xss 옵션 (예 : -Xss1024k)으로 늘릴 수 있습니다. 도움이됩니다.

관련 문제