2014-12-11 5 views
0

해시 함수에 대해 배우기 시작 했으므로이 함수를 발견했습니다. 문자열을 취하고 첫 번째 문자로만 처리하지만 반환되는 내용이 확실하지 않습니다. 나는 첫 번째 char에서 A의 ASCII 값을 뺀 값을 키로 사용하기 위해 int로 반환한다고 생각하지만 확실하지 않습니다. 이게 옳은 거니? 여기에 코드가 있습니다.이 해시 함수가 무엇을 반환하는지 파악하려고 시도했습니다.

int f(string s){return s[0]-'a';} 
+1

문자열의 첫 문자에서 "a"의 * 플랫폼 종속 * 값을 뺍니다. 귀하의 플랫폼에서 ASCII가 사실 일 수도 있지만, [보편적으로 주장하기에는 다소 추측입니다] (http://en.wikipedia.org/wiki/EBCDIC). 동일한 문자로 시작하는 모든 문자열이 서로 충돌 할 것이라는 것을 보장하므로이 값의 최종 값이 버킷 인덱스로 사용되는 경우 무서운 해시 함수이기도합니다. – WhozCraig

+0

이것은 음수 값을 반환 할 수있는 최초의 해시 함수입니다. –

답변

1

는 예,이 해시 함수의 아주 나쁜 예입니다 s

문자열의 첫 번째 문자에서 a의 값을 빼줄 것입니다! 동일한 문자로 시작하는 모든 문자열이 충돌합니다.

관련 문제