我有像这样的字符串数组
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();
您将按照预期获得包含 abc
和 def
值的列表
关于c# - 从字符串数组中删除重复字母的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62575884/