c# - 从字符串数组中删除重复字母的字符串

标签 c# arrays string linq

我有像这样的字符串数组

string[] A = { "abc", "cccc", "fgaeg", "def" };

我想获取一个字符串列表或数组,其中任何字母仅出现一次。我的意思是“cccc”,“fgaeg”将从输入数组中删除。 我设法做到了这一点,但我觉得我的方式很困惑,不必要的复杂,而且效率不高。

您有任何改进此算法的想法(可以仅用一个 Linq 查询替换)吗?

我的代码:

        var goodStrings = new List<string>();
        int i = 0;
        foreach (var str in A)
        {
            var tempArr = str.GroupBy(x => x)
                .Select(x => new
                {
                    Cnt = x.Count(),
                    Str = x.Key
                }).ToArray();

            var resultArr = tempArr.Where(g => g.Cnt > 1).Select(f => f.Str).ToArray();
            if(resultArr.Length==0) goodStrings.Add(A[i]);
            
            i++;
        }

最佳答案

您可以使用Distinct每个数组项的方法并获取不同项数等于原始字符串长度的项

string[] A = { "abc", "cccc", "fgaeg", "def" };
var result = A.Where(a => a.Distinct().Count() == a.Length).ToList();

您将按照预期获得包含 abcdef 值的列表

关于c# - 从字符串数组中删除重复字母的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62575884/

相关文章:

php - 当我尝试测试对基于 PHP 的服务器的请求时,我应该使用 Java 或 Python 中的哪种数据结构,该服务器需要带有字符串索引的数组?

c# - 在 C# 中为 IEnumerable<string> 的每个成员添加前缀/后缀

java - 代码可以在 Netbeans 中运行,但不能在 TextPad 中运行?

.net - 打印 "X"字符数与 "X"字符串长度的所有可能组合(暴力破解)

python - 如何将列表类型更改为str?

c# - 如何使此参数访问语法成为可能?

c# - 调用嵌入在 Winforms-Application 中的 Unity-Application 上的函数

c# - 应用程序设置不会在 Xamarin.Forms 中删除

c# - 如何动态添加控件到 ASP.NET 窗体?

javascript - 限制数组大小