x

One Edit Distance

Leetcode #161 | Medium | Два указателя

Идея

Если длины различаются больше чем на один сразу false, за s берем меньшую строку, идем for'ом до первого несовпадающего символа, если длины равны, то хвосты с i должны быть идентичны, если длины не равны, то у меньшей с i а у большей с i+1 должны быть равны

Big-O

  • Время O(N)
  • Память O(1)

Код

public class Solution {
    public boolean isOneEditDistance(String s, String t) {
        if (Math.abs(s.length() - t.length()) > 1) return false;
        if (s.length() > t.length()) return isOneEditDistance(t, s);
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) != t.charAt(i)) {
                if (s.length() == t.length()) return s.substring(i + 1).equals(t.substring(i + 1));
                else return s.substring(i).equals(t.substring(i + 1));
            }
        }
        return s.length() + 1 == t.length();
    }
}
Left-click: follow link, Right-click: select node, Scroll: zoom
x