最快的字符串来执行重复的字符删除的方法(C#) [英] Fastest way to implement Duplicate Character Removal in String (C#)

查看:329
本文介绍了最快的字符串来执行重复的字符删除的方法(C#)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在C#中,什么是检测重复字符串中的字符并删除它们以最快的方式(去除包括第一实例重复的字符)?

In C#, what is the fastest way to detect duplicate characters in a String and remove them (removal including 1st instance of the duplicated character)?

例输入: nbHHkRvrXbvkn

输出示例: RRX

推荐答案

最快在最少线,OF- code:

Fastest as in fewest-lines-of-code:

var s = "nbHHkRvrXbvkn";
var duplicates = s.Where(ch => s.Count(c => c == ch) > 1);
var result = new string(s.Except(duplicates).ToArray()); // = "RrX"

最快在最快的性能很可能是这样的(没有preserve顺序):

Fastest as in fastest-performance would probably be something like this (does not preserve order):

var h1 = new HashSet<char>();
var h2 = new HashSet<char>();

foreach (var ch in "nbHHkRvrXbvkn")
{
    if (!h1.Add(ch))
    {
        h2.Add(ch);
    }
}

h1.ExceptWith(h2); // remove duplicates

var chars = new char[h1.Count];
h1.CopyTo(chars);
var result = new string(chars); // = "RrX"



性能测试

如果有疑问 - 测试:)

When in doubt -- test it :)


Yuriy Faktorovich's answer        00:00:00.2360900
Luke's answer                     00:00:00.2225683
My 'few lines' answer             00:00:00.5318395
My 'fast' answer                  00:00:00.1842144

这篇关于最快的字符串来执行重复的字符删除的方法(C#)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆