Problem Statement
Input Format
The first line contains a single string, a. The second line contains a single string, b.
Constraints
1<= |a|,|b| <= 10^4
It is guaranteed that and consist of lowercase English alphabetic letters (i.e., through ). Output Format
Print a single integer denoting the number of characters you must delete to make the two strings anagrams of each other.
Sample Input
cde
abc
Sample Output
4
Explanation
We delete the following characters from our two strings to turn them into anagrams of each other:
Remove d and e from cde to get c. Remove a and b from abc to get c. We must delete characters to make both strings anagrams, so we print on a new line.
Solution
public class Solution {
public static int numberNeeded(String first, String second) {
StringBuilder firstBuilder = new StringBuilder(first);
StringBuilder secondBuilder = new StringBuilder(second);
int numberNeeded = firstBuilder.length() + secondBuilder.length();
for (int i=0; i<first.length(); i++) {
char currentChar = first.charAt(i);
for (int j=0; j<secondBuilder.length(); j++) {
char charToCompare = secondBuilder.charAt(j);
if (charToCompare == currentChar) {
firstBuilder.deleteCharAt(0);
secondBuilder.deleteCharAt(j);
numberNeeded -= 2;
break;
}
}
}
return numberNeeded;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String firstArray = in.next();
String secondArray = in.next();
System.out.println(numberNeeded(firstArray, secondArray));
}
}
Can I please get feedback on my code and also on my solution approach? Also, can someone guide me about the time and space complexity of this solution? How do we calculate it and how can I make it better?
Thanks in advance
firstBuilder
is redundant, because apart fromfirstBuilder.length()
, its contents are never read, and the length can also be queried from theString
first
. \$\endgroup\$