문제

내가 줄을 읽는 텍스트는 올 수 있습니다.문제는 출력할 수 있는 실제로 indentical 이전 출력됩니다.어떻게 이를 감지하지 않고,정렬 출력 첫 번째?

어떤 종류가 있는 해시의 수있는 기능을 동일한 입력하지만,어떤 순서로,아직도 생산 결과 같은?

도움이 되었습니까?

해결책

가장 쉬운 방법일 것을 해시한 각선 방법에 저장하는 해시 원본 데이터한 다음 각각의 새로운 해시의 컬렉션의 기존 해시입니다.을 받을 경우 긍정적이고,비교할 수 있는 실제 데이터 확인하기 위하여,그것은 긍정-지만 이것은 매우 드문,당신이 갈 수 있으로 더 빠른 해쉬 알고리즘,다음과 같 MD5 또는(CRC 대신에 다음과 같 SHA 는 느리지만 가능성이 충돌하)단지,그래서 그것은 빠르고 다음을 비교하는 실제 데이터를 얻을 때 당신은 히트합니다.

다른 팁

그래서 당신과 같이 입력

A B C D
D E F G
C B A D

그리고 당신은 필요를 감지하는 첫 번째 라인가 동일한 것을 확인할 수 있습니다.

당신이 알고 싶다면 두 파일에 포함되는 동일한 세트의 라인,하지만 다른 순서로 사용할 수 있습니다,일반 해시 기능을 각 라인에는 개별적으로,그 다음 그들을 결합 기능을 가진 주문한 곳에 상관 없이,다음과 같다.

는 경우 라인은 매우 길고,당신의 목록을 유지 해시의 각 줄이죠 사람들과 비교 이전의 출력이 있습니다.

가 필요하지 않은 경우 100%방 솔루션을 저장할 수 있습 해시의 각 선에 꽃을 필터링(볼과)와 비교 꽃 필터의 끝에서 처리합니다.이 줄 수 있는 틀린 확실성(즉당신은 당신이 생각하는 같은 출력하지만 그렇지 않은 정말로 같은)그러나 당신이 조정할 수 있는 오류율의 크기를 조절하여 꽃 필터...

를 추가하는 경우 ASCII 값의 각 문자에,당신은 같은 결과를 얻을에 관계 없이 순서입니다.

(이 비트는 너무 단순하지만,아마도 그것은 아이디어 불꽃습니다.프로그래밍을 참조하십시오 진주,제 2.8,에 대한 흥미로운 뒤 이야기가 있습니다.)

어떤 해시의 기반 방법에서는 잘못된 결과를 생성하기 때문에 하나 이상의 문자열을 생성할 수 있습니다 같은 해시입니다.(그것의 가능성이 없습니다,그러나 그것은 가능합니다.) 이것은 특히 제안의 추가 해시,이후 당신은 것이 본질적으로그 특히 나쁜 해시의 해쉬값입니다.

Hash 방법을 시도해야하는 경우 그것은 중요하지 않다는 것을 변경 또는 자리에 변경 어디에도 존재합니다.

가장 정확한 방법을 것을 계속 지도를 사용하는 라인으로 문자열을 키고 저장하는 횟수 값이다.(있다면 각 문자열을 표시 할 수 있는 한 번,당신이 필요하지 않다.) 계산이 예상되는 설정의 라인입니다.중복 이 컬렉션을 검사하 들어오는 줄을 줄이고,계산은 각 라인으로 당신이 그것을 참조하십시오.

  • 가 발생한 경우에는 라인으로 영수(또는 항목을 지도 모두에서),본 라인 당신이 기대하지 않았다.
  • 당신이 비 제로 항목을 나머지 지도에서,당신은지 않는 무언가가 예상됩니다.

만 문제는 사양이 약간 제한됩니다.

나는 그것을 이해하고자하시는 경우 몇 가지 문자열을 포함 같은 요소에 관계없이 순서입니다.

예를 들어:

A B C
C B A

은 동일합니다.

이 방법을 이렇게 만들의 설정 값을 비교합니다.집합을 만드는 마:

HashSet set = new HashSet();
foreach (item : string) {
   set.add(item);
}

그런 다음 비의 내용에 의해 설정을 통해 실행하는 하나의 세트 및 비교 w/다른 사람입니다.실행 시간이 될 것입니다 O(N)O(NlogN) 에 대한 정렬 예제입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top