문자열에서 고유 한 문자를 추출하고 싶습니다. 예 : - 'AAABBBBBCCCCFFFFGGGGGDDDDJJJJJJ'
이 반환됩니다. 'ABCFGDJ'
문자열에서 고유 한 문자를 가져 오려면?
아래 코드를 시도했지만 지금은 최적화하고 싶습니다. 아는 사람이 있으면 알려주세요.
static string extract(string original)
{
List<char> characters = new List<char>();
string unique = string.Empty;
foreach (char letter in original.ToCharArray())
{
if (!characters.Contains(letter))
{
characters.Add(letter);
}
}
foreach (char letter in characters)
{
unique += letter;
}
return unique;
}
"나는 그것을 최적화하고 싶습니다"- 왜죠? 프로파일 링하는 동안 발견 한 성능 병목 현상입니까? – Oded
정확히 성능 병목 현상은 아니지만 나중에 얻을 수 있다면 좀 더 최적의 솔루션을 찾고있었습니다. –
@Oded Rahul이 맞습니다. 루프에서 반복 된 문자열 연결을 사용하면 성능이 저하되는 것으로 잘 알려져 있습니다. 이것은'StringBuilder'의 가장 중요한 사용 사례 중 하나입니다. 또한'List'에서'Contains' 메소드를 사용하는 것은 상대적으로 비효율적입니다. 이것은'HashSet '의 가장 중요한 사용 사례 중 하나입니다. 이 코드는'List '대신'HashSet '을 사용하고'StringBuilder'를'unique'으로 바꾸는 것이 훨씬 더 효율적입니다. 하지만 linq 솔루션이 더 좋습니다 : 효율적으로 실행되고 * 더 빠르고 쉽게 코딩 할 수 있습니다. –
phoog