Friday, March 20, 2015

161 One Edit Distance

Given two strings S and T, determine if they are both one edit distance apart.
class Solution {
public:
    bool isOneEditDistance(string s, string t) {
        if (s.size()<t.size())
            return isOneEditDistance(t,s);
        if (s.size()-t.size()>=2)
            return false;
        if (s.size()==t.size())
            return sameSize(s,t);
        else
            return oneSizeDif(s,t);
    }
    bool sameSize(const string &s,const string &t)
    {
        for (int i=0;i<s.size();i++)
        {
            if (s[i]!=t[i])
                return s.substr(i+1)==t.substr(i+1);
        }
        return false;
    }
    bool oneSizeDif(const string &s, const string &t)
    {
        for (int i=0;i<t.size();i++)
        {
            if (s[i]!=t[i])
            {
                return s.substr(i+1)==t.substr(i);
            }
        }
        return true;
    }
};

No comments:

Post a Comment