2009-04-04 3 views
2

죄송합니다. 길이가 공사 시간에 계산 된 것을 몰랐습니다 !! 내가 C# (.NET)에 따라 문자열 길이를 비교하는 함수가 있습니까?

int Al = A.length; int Bl = B.length; 

을하고 비교하면

나는 200 문자 긴 문자열 A, 5 문자 긴 문자열 B 있어 - 모두가 좋은 것 같다하지만 내가 할 경우 이 몇 만 번 뭔가를 계산, 내가 필요로하는 것은 너무 비싸다.

훨씬 간단하고 깔끔한 방법은 두 문자열을 비교하고 다른 문자열이 같을 때 알려주는 기능입니다. (compare_string_lengths (stringA, stringB) 같은 뭔가 - 문자열 A와 문자열 B는 적어도 한 (문자이어야합니다>가) 함수에 대해 true를 반환

을 예, 내가 함수가이 없을 것이라는 점을 알고있다. 생각하는 문자열은 짧은,하지만 두 문자열의 길이가 병렬로 계산 될 경우 하나가 다른을 초과 할 때, 기능은 무엇을 알고 "대답". 어떤 힌트를

감사합니다.

+0

결함이있는 전제가 비관적이기 때문에 질문을 삭제할 수 있습니다. – Brian

+0

이 부분은 http://stackoverflow.com/questions/717801/is-string-length-in-c-net-instant-variable입니까? –

+0

@ 브라이언 : 왜 삭제해야하나요? 이것은 동일한 문제가있는 사람에게 도움이 될 수 있습니다. –

답변

9

만 필요한 경우에 문자열의 길이가 다른지 (또는 비교하기 전에 길이가 동등한 지 확인하고 싶다면) 비교하는 것보다 빨리 할 수 ​​있다고 생각하지 않습니다. Length 속성. 문자열에서 길이를 검색하는 것은 O (1) 연산입니다.

문자열을 실제로 비교하려면 각 문자를 볼 필요가 있으므로 O (n) 연산이됩니다.

편집 : 일들이 너무 느리게 실행하는 경우

, 당신은 프로파일 러의 모습을 가지고 시도해야, 가장 느린 부품 무엇인가? 아마도 그것은 시간이 걸리는 문자열의 구성일까요?

1

두 줄의 길이를 비교하는 것보다 비용이 적게 듭니다.

var x = new System.Collections.Generic.Dictionary<string, bool>(); 
    x.Add("string", true); 
    if (x.ContainsKey("string")) 
     Console.WriteLine("Found string."); 

이 놀라 울 정도로 빠르다 : 당신은 문자열 목록에서 문자열을 찾으려면

는 같은 해시 테이블을 사용합니다.

관련 문제