2012-05-25 2 views
1

5 개의 NSString이 있고 문자열이 동일한 지보고 싶으면 [string isEqualToString:string2] 번을 사용하는 것보다 빠른 방법이 있습니까? 각 문자열을 테스트 하시겠습니까?문자열이 여러 문자열 중 하나와 같은지 확인하는 방법 objective c

+0

타이핑이 적거나 컴퓨팅 속도가 빠릅니다. – mkb

+0

필자는 타이핑에 신경 쓰지 않고, 적은 계산에 대해 얘기하고 있는데, 좋은 접근 방법으로는 – acidic

답변

5

문자열이 5 개인 경우 하나씩 비교하는 것보다 빠를 수는 없습니다.

그러나 문자열이 많은 경우 NSSet을 모두 작성한 다음 -[containsObject:]을 사용하여 문자열이 해당 집합의 구성원인지 확인하십시오.

+0

+1이지만 NSSet의'-containsObject :'는 아마도'-isEqual :'을 사용합니다. NSString 문서에 따르면 두 객체가 문자열이라면'-isEqualToString :'이'-isEqual :'보다 빠르기 때문에 결국'-containsObject :'가 빠르지 않을 것입니다. – Caleb

+0

-containsObject : 문자열이 없으면 하나의 - 해시이거나, 문자열이있는 경우 하나의 - 해시 및 하나의 -isEqual :입니다. -isEqualToString : 각 문자열에서 1-N 호출로 평균 N/2입니다. 따라서 문자열 길이가 N과 같은 순서가 아니면 (따라서 "5 개의 문자열 만있는 경우") 비교가 없습니다. 선형 알고리즘과 상수 알고리즘이 비교 대상이 아닙니다. – abarnert

+0

모든 문자열의 NSSet을 만들었습니다. 중복 된 부분이 있는지 확인하는 방법이 있습니까? 또한 NSSet의 어떤 항목이 중복되는지를 말할 수 있습니까? 감사합니다 – acidic

관련 문제