Удалить дубликат пары из списка - PullRequest
0 голосов
/ 16 апреля 2019

я работал над одной проблемой, я не получаю ожидаемый результат.

Массив строк «F1» содержит имена пользователей Facebook и их друзей.

Например, если мы напишем: U1, U2, это означает, что U1 является другом U2. Это также подразумевает, что U2 является другом U1. Напишите программу, которая будет читать «F1», удалять дубликаты и записывать все уникальные пары в «F2». Но, прежде чем удалять дубликаты

Input String => ["U1, U2", "U3, U4", "U2, U1", "U1, U5"]

Выходная строка => ["U1, U2", "U1, U5", "U3, U4"]

public static void main(String args[]) {

    List test = new ArrayList();
    List<String> list = new ArrayList();
    list.add("U1,U2");
    list.add("U3,U4");
    list.add("U2,U1");
    list.add("U1,U5");
    Collections.sort(list);

    for (String str : list) {
        String i1 = str.substring(0, 2);
        String i2 = str.substring(3, 5);
         System.out.println(i2);
         if (!i1.equals(i2)) {
         test.add(str);
         }
        if (!(str.contains(i1) && str.contains(i2)) || !(str.contains(i2) && str.contains(i1))) {
            System.out.println(str);
        }


    }

}

}

Ответы [ 2 ]

0 голосов
/ 21 июля 2019
Below is the answer to remove the duplicate pair from list using C#. 

protected void Page_Load(object sender, EventArgs e)
{            
   List<string> list = new List<string>();
   list.Add("U1,U2");
   list.Add("U3,U4");
   list.Add("U2,U1");
   list.Add("U1,U5");
   var result=compareFriends(list);
   foreach (string value in result)
   {
     Response.Write(value + "");
    }
}
public static List<string> compareFriends(List<string> frndsList)
{
  List<string> F2 = new List<string>();
  frndsList.Sort();
  foreach (string str in frndsList)
  {
     string s1 = str.Substring(0, 2);
     string s2 = str.Substring(3, 2);

     string key;
     if (s1.CompareTo(s2)>0)
     {
        key = s2 + "," + s1;
     }
     else
     {
        key = s1 + "," + s2;
     }
     F2.Add(key);

     }
     var result = F2.Distinct();            
     return result.ToList();
}
0 голосов
/ 23 апреля 2019

Создайте ключ для каждой пары, где первое значение меньше второго значения.(«U1, U2» и «U2, U2» приведут к «U1, U2»).Добавьте эти ключи в набор (набор удаляет дубликаты для вас).В конце концов у вас есть уникальный набор дружеских отношений.

Set<String> f2=new HashSet<>();

for (String str : list) {
    String[] users=str.split(",");
    String i1 = users[0];
    String i2 = users[1];
    String key=i1.compareTo(i2)>0?i2+","+i1:i1+","+i2;
    f2.add(key);
}
System.out.println(f2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...