일치하는 부분 찾기
본문
일치하는 부분을 찾으려고 하는데,
이게 생각보다 어렵네요 ㅠㅠ
아래 조건을 보고 예제1,예제2의 원하는 결과를 얻고자 합니다.
도와주시면 정말 감사하겠습니다.
조건 시작-----------------
-$s01,$s02에서 6글자이상 일치하는부분을 최대로 찾음
-첫번째 일치하는 부분을 최대로 찾은 경우, 다음 시작하는 글자의 범위가 첫번째 일치하는 부분의 최대값 다음부터 시작
-$s01을 기준으로 순서도 일치해야함
-공백,특수문자는제거
조건 끝-------------------
예제1 시작-------------------------------
$s01="aaaaaabbbbbbcccccc";
$s02="bbbbbbccccccdddddd";
원하는 결과
$s01="aaaaaa[bbbbbbcccccc]";
$s02="[bbbbbbcccccc]dddddd";
예제1 끝---------------------------------
예제2 시작-------------------------------------------------------
$s01="그사람도자신이잘못했다는것을인정하며미안하다고말했습니다";
$s02="본인이잘못했다는것을그사람도인정하며미안하다고말했습니다";
원하는 결과
$s01="그사람도자신이[잘못했다는것을][인정하며미안하다고말했습니다]";
$s02="본인이[잘못했다는것을]그사람도[인정하며미안하다고말했습니다]";
예제2 끝-------------------------------------------------------
답변 1
꽤 어려운 알고리듬이네요.
먼저 $s01 스트링에서 0부터 5까지의 문자를 가져와서 $s01_match,
루프
$s01_match와 $s02를 비교함
맞는 게 있으면
루프
$s01_first에 $s01_match뒤에 한글자 추가후 비교
틀리면
$s02에 매칭에 []로 추가함.
break.
맞는게 없으면
0번째 글자 빼고, 끝에 문자 추가함. (1에서 6까지)
대략 이런식의 알고리듬을 짜야 될 것 같습니다. 중간 중간 변수 프린트해가면서 구현해 보세요. 현재의 index pointer를 잘 콘트롤하는 것이 중요하고. 뒤에도 같은 말이 나왔을 때 어떻게 처리해야 될지도 고민을 해 봐야 될 것 같네요.(앞의 8자로 매칭했는데, 뒤에서 6자로 매칭이 나오는 예외 경우)