srishti056 Ответов: 3

удаление дубликатов из массива


привет,
Как удалить дубликаты в массиве с помощью функции (не используя c# во встроенной функции) ..
например существует массив

string[] str={"1","9","2","7","2","1","9","9"}

я хочу удалить дубликаты из этого и сформировать новый aaray, как

string[] newstr={"1","9","2","7"}


Спасибо и с уважением
Сришти Гупта

3 Ответов

Рейтинг:
12

Sushil Mate

Из StackOverFlow.

public string[] RemoveDuplicates(string[] myList) {
       System.Collections.ArrayList newList = new System.Collections.ArrayList();

       foreach (string str in myList)
           if (!newList.Contains(str))
               newList.Add(str);
       return (string[])newList.ToArray(typeof(string));
   }


srishti056

хорошо спасибо

Sushil Mate

кстати, вы должны сначала попробовать это самостоятельно. не задавайте этот вопрос здесь, Если вы не застряли где-то. смотрите, в следующий раз, когда интервьюер задаст другой вопрос, это не обязательно будет тот же самый вопрос. лучше попробовать самому. Учись кодировать, чтобы не облажаться.

Рейтинг:
0

Aarti Meswania

string[] str={"1","9","2","7","2","1","9","9"};
string[] newstr = new HashSet<string>(str).ToArray();</string>

Счастливого Кодирования!
:)


srishti056

я хочу функцию для этого не встроенную функцию c#

Рейтинг:
0

Thomas Daniels

Цитата:
не используя встроенную функцию c#

А почему бы и нет? Вы можете просто использовать Distinct метод вместо того, чтобы писать метод самостоятельно:
string[] newstr = str.Distinct().ToArray();

На самом деле нет необходимости писать метод самостоятельно.

[Редактировать]

Если вам действительно нужна функция, которая не является встроенной, создайте этот метод расширения:
public static class ExtensionMethods
{
    public static IEnumerable<T> DistinctNonBuiltIn<T>(this IEnumerable<T> source)
    {
        List<T> distinctValues = new List<T>();
        foreach (T val in source)
        {
            if (!distinctValues.Contains(val))
            {
                distinctValues.Add(val);
            }
        }
        return (IEnumerable<T>)distinctValues;
    }
}

И чтобы получить четкие значения:
string[] newstr = str.DistinctNonBuiltIn().ToArray();

Надеюсь, это поможет.


srishti056

я на самом деле это вопрос интервью и он сказал что напишет саму функцию

Thomas Daniels

Я обновил свой ответ.