Mar 8, 2022

one away string

 #include <iostream>

#include <cstring>


using namespace std;


const int maxsize = 128;


void oneAway(char a[], char b[])

{

    int dist = strlen(a) - strlen(b);

    if(dist  > 1 || dist  < -1 )

    {

        cout << "false";

        return;

    }

    

    

    

    if(dist == 0)

    {

        //check for 1 replace

        int p=0;

        for(int i=0; i< strlen(a); i++)

        {

            if(a[i] != b[i])

            {

                ++p;

                if(p>1)

                {

                    cout << "false";

                    return;

                }

            }

        }

    }

    else

    {

        //check for 1 insert or remove :  (ab, a | b), (b, ab | ba)

        int p=0;

        int index = strlen(a) > strlen(b) ? 1 : 0;

        int len =  (index == 1) ? strlen(a) : strlen(b);

        int change=0;

        for(int i=0, j=0; i<len; i++, j++)

        {

            if(a[i] != b[j])

            {

                if(index == 1)

                {

                    i++;

                    change++;

                }

                else

                {

                    j++;

                    change++;

                }

            }

            

            if(change >1)

            {

                cout << false;

                return;

            }

            

        }

    }

    

    cout << "true";

}


int main() {

// your code goes here

char *a = "pale";

char *b = "pale";

oneAway(a, b);

return 0;

}


No comments: