面试题 01.05

There are three types of edits that can be performed on strings: insert a character, remove a character, or replace a character. Given two strings, write a function to check if they are one edit (or zero edits) away.

Example 1:

Input: first = "pale" second = "ple" Output: True Example 2:

Input: first = "pales" second = "pal" Output: False

Solutions

  1. straight forward

class Solution {
public:
    bool oneEditAway(string first, string second) {
        if (first.size() < second.size())
            return oneEditAway(second, first);
        if (abs((int)first.size() - (int)second.size()) > 1)
            return false;

        bool uneq = first.size() != second.size();
        int i = 0, j = 0, cnt = 0;
        while (i < first.size()) {
            if (first[i++] != second[j++]) {
                if (++cnt > 1) return false;
                if (uneq) j--;
            }
        }
        return true;
    }
};

Last updated