当前位置:  开发笔记 > 编程语言 > 正文

什么是返回List <string>元素的微优化和最优雅方式,这些元素仅在其他List <string>中出现一次

如何解决《什么是返回List<string>元素的微优化和最优雅方式,这些元素仅在其他List<string>中出现一次》经验,为你挑选了1个好方法。

这是我今天面试的一个问题:

"给定一个字符串列表,返回一个只有唯一字符串的列表"

我很好奇Skeet认证的答案是什么.

我自己的答案是

public static List sans_repeats ( List input ) 
{
    Dictoinary counter = new Dictionary();
    List output = new List();
    foreach ( string S in input ) 
    {
       if ( counter.HasKey(S) ) counter[S] = 1;
       else ++count[S];
    }     
    foreach ( KeyValuePair entry in counter ) 
       if ( entry.Value == 1 ) output.Add(entry.Key);
    return output;
}

和采访说

"嗯,这是一种方法......"

在一个听起来居高临下的声音中,好像我做错了什么.

它有什么逻辑错误吗?

有没有办法实现更高内存和处理效率的解决方案?

面试官是否可能正在寻找LINQ-esque解决方案?他为什么不喜欢我的?

有没有办法让这个更紧凑?

shree.pat18.. 6

基于更新的问题,这是LINQ的一种方式:

var src = new List() { "dog", "cat", "elephant", "dog", "dog" } ;
src.GroupBy(x => x).Where(y => y.Count() == 1).ToList();

演示



1> shree.pat18..:

基于更新的问题,这是LINQ的一种方式:

var src = new List() { "dog", "cat", "elephant", "dog", "dog" } ;
src.GroupBy(x => x).Where(y => y.Count() == 1).ToList();

演示


如果底层结构不是"ICollection"(你不知道),那么调用`Count()`会非常昂贵.所以我更喜欢`!y.Skip(1).Any()`见[demo](http://rextester.com/GVLY44974).
在ToList`调用之前不应该有`.Select(g => g.Key)`.
推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有