c# - 如何在 C# .Net 中查找字符串中的重复字符

标签 c# .net string

我有一个问题,如何在 C# 中删除字符串中的重复项。

示例 - 输入字符串:

acdhqodcqasaf

输出:

acdhqosaf

我真正的意思是删除甚至出现的字符。我已经写了逻辑,但我使用了嵌套 for 循环,它的效率是 O(n^2),效率不高。所以我被要求做网上查了各种方法还是没有得到答案

最佳答案

您可以使用字典来跟踪出现次数并使用 % 运算符:

string input = "acdhqodcqasaf";
var charOccurences = new Dictionary<char, int>();
int removeEvery = 2;
var outputBuilder = new StringBuilder();

foreach (char c in input)
{
    charOccurences.TryGetValue(c, out int charOccurence);
    charOccurence++;
    charOccurences[c] = charOccurence;
    if (charOccurence % removeEvery != 0)
        outputBuilder.Append(c);
}

string output = outputBuilder.ToString();

关于c# - 如何在 C# .Net 中查找字符串中的重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53087678/

相关文章:

c# - 如何拆分并剥离为多个变量?

c# - 了解 Trace 在 C# 中的工作原理

c# - 从 .exe 获取 FileDescription (ProgramName)

c# - 使用 NET.TCP 的 WCF 传输 Windows 身份验证仅在本地有效

c# - 检查变量以在运行时 C# 设置类值

javascript - 拆分以@符号开头的多个单词

c# - MVC3 Controller 如何检索 HTTPPOST 参数?

.net - Powershell/.net CheckedChanged事件处理

.net - 这个 UTC 时间格式是什么?

c - 用指针修改字符串