Предложения, необходимые для удаления символов из строки - PullRequest
0 голосов
/ 19 июня 2019

Я написал программу для удаления символов из второй строки, которые присутствуют в первой строке.

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

class StrAssiQ5
{
  public static String Removal(String s,String s1)
  {
    StringBuffer a=new StringBuffer();;
    for(int i=0; i<s.length(); i++)
    {int count=0;
      for(int j=0; j<s1.length(); j++)
      {

        if(s.charAt(i)==s1.charAt(j))
        {
          count++;
        //a.append(Character.toString(s.charAt(i)));
        }
      }
      if (count==0)
      a.append(Character.toString(s.charAt(i)));
    }
    return a.toString();
  }
  public static void main(String [] args)
  {
    String s="Gaurav";
    String s1="Juneja";
    s=StrAssiQ5.Removal(s,s1);
    System.out.println(s);
  }
}

вывод: Grv

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Гаурав лучше и эффективнее будет использовать вместо этого связанные карты.Поместите все символы первой строки в связанную карту с частотами в качестве значений и символами в качестве ключей.Использование карты такого типа также сохранит порядок.

Затем пройдитесь по второй строке и, соответственно, уменьшите частоты с карты.

У вас останутся уникальные символы первой строки.

Сложность: Макс (длина A, длина B).

0 голосов
/ 19 июня 2019

Общее практическое правило в области компьютерных наук для этого типа операций со списком различий заключается в использовании Задать структуру данных. В Java есть класс HashSet, который можно использовать для этой цели. Создайте два HashSets из элементов ваших строк. Затем вы удаляете метод AllAll, унаследованный от класса Set.

Документация по удалениюВсе

Документация по HashSet

Пример из SO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...