Одно изменение Реализуй метод isOneEditAway(String first, String second) который будет возвращать true, если возможно изменить/добавить/удалить один символ в одной из строк и получить другую. Символы в анализируемой строке ограничены кодировкой ASCII. Регистр символов учитывается. Требования: 1. Метод isOneEditAway должен корректно работать для строк одинаковой длины. 2. Метод isOneEditAway должен корректно работать для строк разной длины. 3. Метод isOneEditAway должен корректно работать для пустых строк. 4. Метод isOneEditAway должен быть публичным. У меня не принимает первые два пункта. Код:
package com.javarush.task.task39.task3909;

/*
Одно изменение
*/
public class Solution {
    public static void main(String[] args) {
        System.out.println(isOneEditAway("", "")); // true
        System.out.println(isOneEditAway("", "m")); //true
        System.out.println(isOneEditAway("m", "")); //true
        //System.out.println(isOneEditAway("m", null)); //
        System.out.println("------");
        System.out.println(isOneEditAway("mama", "ramas")); //false
        System.out.println(isOneEditAway("mamas", "rama")); //false
        System.out.println(isOneEditAway("rama", "mama")); //true
        System.out.println(isOneEditAway("mama", "dama")); //true
        System.out.println(isOneEditAway("ama", "mama"));  //true
        System.out.println(isOneEditAway("mama", "ama")); //true
    }

    public static boolean isOneEditAway(String first, String second) {
        /*if (first == null || second == null)
            return false;*/
        // По комментам это условие просто необходимо
        if (first.equals(second))
            return true;

        //заполняем два массива количеством символов из обоих строк согласно кодов ASCII
        int len = 255;
        int[] countOfCharsFirst = new int[len];
        char[] chars = first.toCharArray();
        for (int i = 0, n = chars.length; i < n; i++) {
            countOfCharsFirst[(int)chars[i]] ++;
        }

        int[] countOfCharsSecond = new int[len];
        chars = second.toCharArray();
        for (int i = 0, n = chars.length; i < n; i++) {
            countOfCharsSecond[(int)chars[i]] ++;
        }

        //вводим две переменные разницы кол-ва символов, две чтобы учитывать случай со сменой символа
        int countOfDiff1 = 0;
        int countOfDiff2 = 0;
        for (int i = 0; i < len; i++) {
            //если кол-во какого символа в первой строке больше на 1 чем во второй, то инкрементируем разницу1
            if (countOfCharsFirst[i] - countOfCharsSecond[i] == 1) {
                countOfDiff1++;
            }
            //если кол-во какого символа в первой строке меньше на 1 чем во второй, то инкрементируем разницу2
            if (countOfCharsFirst[i] - countOfCharsSecond[i] == -1) {
                countOfDiff2++;
            }

            //если разница в количестве больше 1, то сразу false
            if (Math.abs(countOfCharsFirst[i] - countOfCharsSecond[i]) > 1)
                return false;

            //если количество одной из разниц больше 1, то сразу false
            if (countOfDiff1 > 1 || countOfDiff2 > 1)
                return false;
        }

        //если любая разница в количестве равна 1 или обе сразу, то true
        if (countOfDiff1 == 1 || countOfDiff2 == 1)
            return true;

        //остаточный false
        return false;
    }
}