2012-10-01 3 views
0

단어 수 계산 알고리즘을 구현하려고합니다. 그러나 ~two tildes~ 안에 나타나는 것은 1 단어로 간주됩니다. 이런 이유로 정규 표현식이 아마도 최선의 방법 일 것이라고 생각합니까? 그것은 바로 그걸 얻기 위해 좋은, 그래서 정규식을 사용하여 효율적인 단어 계산 방법

카운트

은 약 10000 문자의 샘플 세트에있는 모든 키를 누를 때 계산해야합니다.

+2

귀하의 명세서에서 이것은 몇 단어로 간주 될 것입니까 : ~ 1 ~ 2 ~ 3 ~'? – Serge

답변

1

테스트하지는 않았지만 꽤 똑바로 전방 ...

또한 닫는 물결표가 없더라도 은 hi one, two, three four~hi one~two~three four으로 계산됩니다.

3

당신은 정말 모든 키를 누를에 전체를 다시 계산해야합니까? 두 공간 사이에 있지 않으면 키가 없지만 ~ 또는 공백으로 단어 수가 변경 될 수 있습니다. 이러한 특수 키의 경우 일반적으로 전체 버퍼를 다시 처리하지 않고도 로컬로 단어 수의 변경 사항을 확인할 수 있어야합니다.

어쨌든, 당신은 정규식이 필요하지 않습니다. ~이 표시 될 때마다 깃발을 뒤집기 만하면됩니다. 숫자 카운터에 결합

0

단순한 유한 상태 오토 마톤 잘 작동한다.

OUTSIDE 
WORD 
TILDEWORD 

우리가 OUTSIDE에서 시작 :

우리는 다음과 같은 상태를 말한다. 그런 다음 각 캐릭터를 처리하기 시작할 수 있으며 다음 상태로 이동할 수 있습니다.

우리가 바깥에 있다면 우리가 파일의 끝에 도달하면 우리가 어디

  1. 가있어.

  2. 물결 무늬가 보이는 경우 TILDEWORD 상태로 이동하여 카운터라고 부릅니다.

  3. 단어 문자가 표시되면 WORD 상태로 이동하여 카운터라는 단어를 부릅니다. 우리가 어디

  4. 그렇지 않으면,있어.

다른 두 상태에 대한 사례 분석은 유사해야합니다. 모든 것은 보드 게임과 거의 비슷합니다.

------> OUTSIDE <----------> WORD 
     ^    ^
      |     | 
      |     V 
      +-------------> TILDEWORD 

그리고 우리가 유한 상태 오토 마톤에서 어디에 있는지 추적하기 위해 C 프로그램을 작성하는 것은 직접적입니다.

화살표 양방향 수 있습니다. 이 입력을 고려 :

hello~happy fabulous world~testing is good 

문제 문은 우리가 다른 단어를 스캔하고 같은 물결을 볼 때 어떻게되는지에 약간 퍼지입니다; 나는 위의 내용이 다섯 단어의 순서가되도록 별도의 단어로 간주해야한다고 생각합니다. 물론 해석이 다를 수 있습니다. 가장자리 케이스를 고려하십시오!