Я пишу функцию, которая принимает две строки и должна удалять символы из одной или обеих строк, пока обе строки не будут иметь одинаковые символы.Затем я должен вернуть количество символов, которое необходимо было удалить, чтобы получить статус анаграммы для обоих.Я получаю странный вывод (и прохожу один тестовый пример).Может кто-нибудь сказать мне, где моя функция не работает?
public class Solution {
static int makeAnagram(String a, String b, int aLeng, int bLeng) {
StringBuilder stringA = new StringBuilder(a);
StringBuilder stringB = new StringBuilder(b);
int result=0;
for (int i=0; i<stringB.length();i++)
{
if (a.contains(b.substring(i)))
continue;
else
stringB.deleteCharAt(i);
}
for (int i=0; i<stringA.length();i++)
{
//if(stringB.toString().contains(stringA.toString().substring(i)))
if (b.contains(a.substring(i)))
continue;
else
stringA.deleteCharAt(i);
}
if (stringA.length()==stringB.length())
result = (aLeng-stringA.length()) + (bLeng-stringB.length());
else
result = -1;
return result;
}
private static final Scanner scanner = new Scanner(System.in);
public static void main(String[] args) throws IOException {
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
String a = scanner.nextLine();
String b = scanner.nextLine();
int aLeng = a.length();
int bLeng = b.length();
int res = makeAnagram(a, b, aLeng, bLeng);
bufferedWriter.write(String.valueOf(res));
bufferedWriter.newLine();
bufferedWriter.close();
scanner.close();
}
}
Контрольный пример 1
Input (stdin)
cde
abc
Your Output (stdout)
4
Expected Output
4
Контрольный пример 2
Input (stdin)
fcrxzwscanmligyxyvym
jxwtrhvujlmrpdoqbisbwhmgpmeoke
Your Output (stdout)
-1
Expected Output
30
Compiler Message
Wrong Answer
Контрольный пример3
Input (stdin)
showman
woman
Your Output (stdout)
6
Expected Output
2
Compiler Message
Wrong Answer