2016-04-27 60 views
0

我會把它直接: 比如我有一個數組減少重複的堆棧中的數組只有一個在C#中

int[] integers = {1, 2, 2, 2, 4, 5, 2, 2, 2}; 

和所有我喜歡的是減少2所有的堆到只有一個2.我需要在最後得到這個:

{1, 2, 4, 5, 2}; 

我看了一下.Distinct()方法和每一種comparers的,但是這種方法刪除所有相同的元素,我不希望這個。我仍然認爲有一些方法可以通過Linq或somethig來完成。謝謝!

+0

檢查了這一點http://stackoverflow.com/questions/3350641/array-remove-duplicate-elements –

+0

如果我理解你,你想要的是什麼,和Unix的''uniq''實用程序(http://linux.die.net/man/1/uniq)一樣,除了它作用於數組的條目而不是文件。 –

+0

你使用什麼語言?在許多語言中似乎都有「獨特」的功能,但是它們消除了所有的重複,而不僅僅是連續的重複。下面是在Ruby中解決這個問題的方法:例如:http://stackoverflow.com/questions/4576652/how-do-you-merge-consecutive-repeating-elements-in-an-array –

回答

1

使用LINQ,盧克!

var result = integers.Where((n, i) => 
    i == 0 ? true : n != integers[i - 1]); 

更簡潔:

var result = integers.Where((n, i) => 
    i == 0 || n != integers[i - 1]); 
+0

正是我需要的。謝謝! –

0

我覺得.net沒有這個功能。

所以你應該使用簡單的foreach。

var result = List<int>(); 
foreach(var item in integers) 
{ 
    if(!result.Any()) 
    { 
     result.Add(item); 
    } 
    else if(result[result.Count() - 1] != item) 
    { 
     result.Add(item); 
    } 
}