{"id":1878,"date":"2020-07-01T09:46:36","date_gmt":"2020-07-01T09:46:36","guid":{"rendered":"https:\/\/blog.prepbytes.com\/?p=1878"},"modified":"2022-03-28T23:52:20","modified_gmt":"2022-03-28T23:52:20","slug":"hop-digits","status":"publish","type":"post","link":"https:\/\/prepbytes.com\/blog\/hop-digits\/","title":{"rendered":"Hop Digits"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101564020-Article_355.png\" alt=\"\" \/><\/p>\n<h3>Concepts Used<\/h3>\n<blockquote>\n<p>Breadth First Search<\/p>\n<\/blockquote>\n<h3>Difficulty Level<\/h3>\n<blockquote>\n<p>Hard<\/p>\n<\/blockquote>\n<h3>Problem Statement :<\/h3>\n<blockquote>\n<p>Given a string , we are standing at the starting point and we have to reach end in minimum steps by following these rules:<\/p>\n<ul>\n<li>We can either jump to neighbour indices or,<\/li>\n<li>We can jump to a position with same value.<\/li>\n<\/ul>\n<\/blockquote>\n<p><a href=\"https:\/\/mycode.prepbytes.com\/problems\/graphs\/HOPDG\" title=\"Go to mycode.prepbytes.com\" target=\"_blank\" rel=\"noopener noreferrer\"><u><strong><\/strong><\/u><\/a><\/p>\n<h3>Solution Approach :<\/h3>\n<h4>Introduction :<\/h4>\n<p>Idea is to consider every character index, as a vertex of a graph where there is an edge between next and previous indices (vertices) and also between the indices with same values.<\/p>\n<p>Example : 1213 =&gt; string<\/p>\n<p>By taking indices of the string as vertices, 0&#8211;2, 0&#8211;1, 1&#8211;0, 1&#8211;2, 2&#8211;3, these are the egdes of the graph. Notice there is a direct edge between 1 (at index 0) and 1(at index 2) as the values in the both indices are same.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes.com\/blog\/wp-content\/uploads\/2020\/06\/hopdg.png\" alt=\"\" \/><\/p>\n<h4>Description :<\/h4>\n<p>We can use <strong>bfs<\/strong> or <strong>breadth first search<\/strong> to traverse every vertex, as bfs guarantees the minimum steps (why?, since it moves level wise). As mentioned above we can make  a graph with indices as vertices, with every adjacent index and index with same values, as an edge. Additionally, we can store the indices of every character, using a 2-D array with 10 rows (0-9) for values, where each row stores the index of the character with value same as row number.<\/p>\n<p>We will use <code>visited[]<\/code> array to keep track of the indices which is already visited so we visit every vertex once only. Now we just have to traverse through all the vertices  and for every vertex <code>v<\/code> store the distance of every adjacent vertex <code>a<\/code> using distance array <code>distance[]<\/code> as, <code>distance[a]=distance[v]+1<\/code>. <\/p>\n<h3>Algorithms :<\/h3>\n<p><strong>minDistance()<\/strong> :<\/p>\n<ol>\n<li>\n<p>create a queue and push the current index now perform following operations untill the queue is empty:<\/p>\n<\/li>\n<li>\n<p>each time we pop a vertex <code>v<\/code> from queue, ( <code>v<\/code> = queue.front() ), we will mark the vertex <code>v<\/code> as visited (<code>visited[v]= true<\/code>).<\/p>\n<\/li>\n<li>\n<p>Iterate for all the adjacent vertices of <code>v<\/code> and for every adjacent vertex <code>a<\/code>, do following :<\/p>\n<ul>\n<li>\n<p>mark <code>a<\/code> as visited and update distance as, <code>distance[a]= distance[v]+1<\/code>.<\/p>\n<\/li>\n<li>\n<p>push <code>a<\/code> into the queue.<\/p>\n<\/li>\n<li>\n<p>if <code>a<\/code> is not visited,<br \/>\nand if <code>parent[v] != a<\/code>. <\/p>\n<\/li>\n<li>\n<p>update the ans ( ans = min(ans,current cycle length) ).<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Now check if the previous and next index is visited or not, if not mark them as visited and push into the queue.<\/p>\n<\/li>\n<\/ol>\n<h3>Complexity Analysis:<\/h3>\n<p>The <strong>time complexity<\/strong> of the above method is represented in the form of <code>O(V+E)<\/code>, where <code>V<\/code> is the number of verices and <code>E<\/code> is the number of edges. <\/p>\n<h3>Solutions:<\/h3>\n<p>\t\t\t\t\t\t<style>\r\n\t\t\t\t\r\n\t\t\t\t\t#tab_container_1900 {\r\n\toverflow:hidden;\r\n\tdisplay:block;\r\n\twidth:100%;\r\n\tborder:0px solid #ddd;\r\n\tmargin-bottom:30px;\r\n\t}\r\n\r\n#tab_container_1900 .tab-content{\r\n\tpadding:20px;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n\tmargin-top: 0px;\r\n\tbackground-color:#ffffff !important;\r\n\tcolor: #000000 !important;\r\n\tfont-size:16px !important;\r\n\tfont-family: Open Sans !important;\r\n\t\r\n\t\tborder: 1px solid #e6e6e6 !important;\r\n\t}\r\n#tab_container_1900 .wpsm_nav-tabs {\r\n    border-bottom: 0px solid #ddd;\r\n}\r\n#tab_container_1900 .wpsm_nav-tabs > li.active > a, #tab_container_1900 .wpsm_nav-tabs > li.active > a:hover, #tab_container_1900 .wpsm_nav-tabs > li.active > a:focus {\r\n\tcolor: #000000 !important;\r\n\tcursor: default;\r\n\tbackground-color: #ffffff !important;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n}\r\n\r\n#tab_container_1900 .wpsm_nav-tabs > li > a {\r\n    margin-right: 0px !important; \r\n    line-height: 1.42857143 !important;\r\n    border: 1px solid #d5d5d5 !important;\r\n    border-radius: 0px 0px 0 0 !important; \r\n\tbackground-color: #e8e8e8 !important;\r\n\tcolor: #000000 !important;\r\n\tpadding: 15px 18px 15px 18px !important;\r\n\ttext-decoration: none !important;\r\n\tfont-size: 14px !important;\r\n\ttext-align:center !important;\r\n\tfont-family: Open Sans !important;\r\n}\r\n#tab_container_1900 .wpsm_nav-tabs > li > a:focus {\r\noutline: 0px !important;\r\n}\r\n\r\n#tab_container_1900 .wpsm_nav-tabs > li > a:before {\r\n\tdisplay:none !important;\r\n}\r\n#tab_container_1900 .wpsm_nav-tabs > li > a:after {\r\n\tdisplay:none !important ;\r\n}\r\n#tab_container_1900 .wpsm_nav-tabs > li{\r\npadding:0px !important ;\r\nmargin:0px;\r\n}\r\n\r\n#tab_container_1900 .wpsm_nav-tabs > li > a:hover , #tab_container_1900 .wpsm_nav-tabs > li > a:focus {\r\n    color: #000000 !important;\r\n    background-color: #e8e8e8 !important;\r\n\tborder: 1px solid #d5d5d5 !important;\r\n\t\r\n}\r\n#tab_container_1900 .wpsm_nav-tabs > li > a .fa{\r\n\r\nmargin-right:5px !important;\r\n\r\nmargin-left:5px !important;\r\n\r\n\r\n}\r\n\r\n\t\t#tab_container_1900 .wpsm_nav-tabs a{\r\n\t\t\tbackground-image: none;\r\n\t\t\tbackground-position: 0 0;\r\n\t\t\tbackground-repeat: repeat-x;\r\n\t\t}\r\n\t\t\t\r\n\r\n\r\n#tab_container_1900 .wpsm_nav-tabs > li {\r\n    float: left;\r\n    margin-bottom: -1px !important;\r\n\tmargin-right:0px !important; \r\n}\r\n\r\n\r\n#tab_container_1900 .tab-content{\r\noverflow:hidden !important;\r\n}\r\n\r\n\r\n@media (min-width: 769px) {\r\n\r\n\t#tab_container_1900 .wpsm_nav-tabs > li{\r\n\t\tfloat:left !important ;\r\n\t\t\t\tmargin-right:-1px !important;\r\n\t\t\t\t\t}\r\n\t#tab_container_1900 .wpsm_nav-tabs{\r\n\t\tfloat:none !important;\r\n\t\tmargin:0px !important;\r\n\t}\r\n\r\n\t#tab_container_1900 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_1900 .wpsm_nav{\r\n\t\t\t}\r\n\r\n}\r\n\r\n\r\n\r\n@media (max-width: 768px) {\r\n\t#tab_container_1900 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_1900 .wpsm_nav{\r\n\t\t\t}\r\n}\r\n\r\n\r\n\t.wpsm_nav-tabs li:before{\r\n\t\tdisplay:none !important;\r\n\t}\r\n\r\n\t@media (max-width: 768px) {\r\n\t\t\t\t\r\n\t\t\t\t.wpsm_nav-tabs{\r\n\t\t\tmargin-left:0px !important;\r\n\t\t\tmargin-right:0px !important; \r\n\t\t\t\r\n\t\t}\r\n\t\t\t\t#tab_container_1900 .wpsm_nav-tabs > li{\r\n\t\t\tfloat:none !important;\r\n\t\t}\r\n\t\t\t\r\n\t}\t\t\t\t<\/style>\r\n\t\t\t\t<div id=\"tab_container_1900\" >\r\n\t \r\n\t\t\t\t\t<ul class=\"wpsm_nav wpsm_nav-tabs\" role=\"tablist\" id=\"myTab_1900\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  class=\"active\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_1900_1\" aria-controls=\"tabs_desc_1900_1\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>C<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_1900_2\" aria-controls=\"tabs_desc_1900_2\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>C++<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_1900_3\" aria-controls=\"tabs_desc_1900_3\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Java<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t\t\t <\/ul>\r\n\r\n\t\t\t\t\t  <!-- Tab panes -->\r\n\t\t\t\t\t  <div class=\"tab-content\" id=\"tab-content_1900\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane  in active \" id=\"tabs_desc_1900_1\">\r\n\t\t\t\t\t\t\t\t\r\n\r\n<!-- wp:enlighter\/codeblock {\"language\":\"c\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n\r\n#include &lt;stdio.h&gt;\r\n    #include &lt;stdlib.h&gt;\r\n    #include&lt;string.h&gt;\r\n    #define INT_MIN -999999\r\n\r\n    \/\/ADJACENCY LIST\r\n    struct node {\r\n    int vertex;\r\n    struct node* next;\r\n    };\r\n    struct node* createNode(int);\r\n\r\n    struct Graph {\r\n    int numVertices;\r\n    struct node** adjLists;\r\n    };\r\n\r\n    \/\/ Create a node\r\n    struct node* createNode(int v) {\r\n    struct node* newNode = malloc(sizeof(struct node));\r\n    newNode-&gt;vertex = v;\r\n    newNode-&gt;next = NULL;\r\n    return newNode;\r\n    }\r\n\r\n    \/\/ Create a graph\r\n    struct Graph* createAGraph(int vertices) {\r\n    struct Graph* graph = malloc(sizeof(struct Graph));\r\n    graph-&gt;numVertices = vertices;\r\n\r\n    graph-&gt;adjLists = malloc(vertices * sizeof(struct node*));\r\n\r\n    int i;\r\n    for (i = 0; i &lt; vertices; i++)\r\n        graph-&gt;adjLists[i] = NULL;\r\n\r\n    return graph;\r\n    }\r\n\r\n    \/\/ Add edge\r\n    void addEdge(struct Graph* graph, int s, int d) {\r\n    \/\/ Add edge from s to d\r\n    struct node* newNode = createNode(d);\r\n    newNode-&gt;next = graph-&gt;adjLists[s];\r\n    graph-&gt;adjLists[s] = newNode;\r\n\r\n    }\r\n\r\n\r\n\r\n    \/\/QUEUE\r\n    struct Queue\r\n    {\r\n        int front, rear, size;\r\n        unsigned capacity;\r\n        int* array;\r\n    };\r\n\r\n\r\n    struct Queue* createQueue(unsigned capacity)\r\n    {\r\n        struct Queue* queue = (struct Queue*) malloc(sizeof(struct Queue));\r\n        queue-&gt;capacity = capacity;\r\n        queue-&gt;front = queue-&gt;size = 0;\r\n        queue-&gt;rear = capacity - 1;  \/\/ This is important, see the enqueue\r\n        queue-&gt;array = (int*) malloc(queue-&gt;capacity * sizeof(int));\r\n        return queue;\r\n    }\r\n\r\n    int isEmpty(struct Queue* queue)\r\n    {  return (queue-&gt;size == 0); }\r\n\r\n\r\n    void enqueue(struct Queue* queue, int item)\r\n    {\r\n        if (isFull(queue))\r\n            return;\r\n        queue-&gt;rear = (queue-&gt;rear + 1)%queue-&gt;capacity;\r\n        queue-&gt;array[queue-&gt;rear] = item;\r\n        queue-&gt;size = queue-&gt;size + 1;\r\n        \/\/printf(\"%d enqueued to queue&#92;n\", item);\r\n    }\r\n\r\n    int dequeue(struct Queue* queue)\r\n    {\r\n        if (isEmpty(queue))\r\n            return INT_MIN;\r\n        int item = queue-&gt;array[queue-&gt;front];\r\n        queue-&gt;front = (queue-&gt;front + 1)%queue-&gt;capacity;\r\n        queue-&gt;size = queue-&gt;size - 1;\r\n        return item;\r\n    }\r\n\r\n    \/\/ Function to get front of queue\r\n    int front(struct Queue* queue)\r\n    {\r\n        if (isEmpty(queue))\r\n            return INT_MIN;\r\n        return queue-&gt;array[queue-&gt;front];\r\n    }\r\n\r\n    \/\/ Function to get rear of queue\r\n    int rear(struct Queue* queue)\r\n    {\r\n        if (isEmpty(queue))\r\n            return INT_MIN;\r\n        return queue-&gt;array[queue-&gt;rear];\r\n    }\r\n\r\n\r\n\r\n    int getMinStepToReachEnd(int arr[], int N) \r\n    { \r\n        int visit[N]; \r\n\r\n        int distance[N]; \r\n\r\n        struct Graph * digit= createAGraph(10);\r\n\r\n        \/\/ In starting all index are unvisited \r\n        memset(visit, 0, sizeof(visit)); \r\n\r\n        for (int i = 1; i &lt; N; i++) \r\n            addEdge(digit, arr[i],i);\r\n\r\n        distance[0] = 0; \r\n        visit[0] = 1; \r\n\r\n        \/\/ Creating a queue and inserting index 0. \r\n        struct Queue* q = createQueue(1000);\r\n        enqueue(q,0);\r\n\r\n        \/\/ loop untill queue in not empty \r\n        while(!isEmpty(q)) \r\n        { \r\n            \/\/ Get an item from queue, q. \r\n            int idx = front(q);     dequeue(q); \r\n\r\n            \/\/ If we reached to last index break from loop \r\n            if (idx == N-1) \r\n                break; \r\n\r\n            \/\/ Find value of dequeued index \r\n            int d = arr[idx]; \r\n            struct node * temp = digit-&gt;adjLists[d];\r\n\r\n            \/\/ looping for all indices with value as d. \r\n            \/\/for (int i = 0; i&lt;digit[d].size(); i++) \r\n            while(temp)\r\n            { \r\n                int nextidx = temp-&gt;vertex; \r\n                if (!visit[nextidx]) \r\n                { \r\n                    visit[nextidx] = 1; \r\n                    enqueue(q,nextidx); \r\n\r\n                    \/\/ update the distance of this nextidx \r\n                    distance[nextidx] = distance[idx] + 1; \r\n                } \r\n                temp = temp-&gt;next;\r\n            } \r\n\r\n            \/\/ checking condition for previous index \r\n            if (idx-1 &gt;= 0 &amp;&amp; !visit[idx - 1]) \r\n            { \r\n                visit[idx - 1] = 1; \r\n                enqueue(q,idx - 1); \r\n                distance[idx - 1] = distance[idx] + 1; \r\n            } \r\n\r\n            \/\/ checking condition for next index \r\n            if (idx + 1 &lt; N &amp;&amp; !visit[idx + 1]) \r\n            { \r\n                visit[idx + 1] = 1; \r\n                enqueue(q,idx + 1); \r\n                distance[idx + 1] = distance[idx] + 1; \r\n            } \r\n        } \r\n\r\n        \/\/ N-1th position has the final result \r\n        return distance[N - 1]; \r\n    } \r\n\r\n    int main() \r\n    { \r\n    char str[1000001];\r\n    scanf(\"%s\",str);\r\n    int n = strlen(str);\r\n\r\n        int arr[n] ;\r\n        for(int i=0;i&lt;n;i++)\r\n        {\r\n        arr[i]= str[i]-'0';\r\n        }\r\n        printf(\"%d&#92;n\",getMinStepToReachEnd(arr, n)); \r\n        return 0; \r\n    } \r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\r\n\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_1900_2\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"cpp\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n\r\n#include&lt;bits\/stdc++.h&gt;\r\n    using namespace std;\r\n    #define min(a,b) ((a)&lt;(b)?(a):(b))\r\n    #define max(a,b) ((a)&gt;(b)?(a):(b))\r\n    #define memo(a,v) memset(a,v,sizeof(a))\r\n    #define CLR(a) memo(a,0)\r\n    #define pb push_back\r\n    #define all(a) a.begin(),a.end()\r\n    #define eps (1e-9)\r\n    #define inf (1&lt;&lt;29)\r\n    #define i64 long long\r\n    #define u64 unsigned i64\r\n    #define AIN(a,b,c) (a&lt;=b &amp;&amp; b&lt;=c)\r\n\r\n    int d[100005];\r\n    vector&lt;int&gt; adj[10];\r\n    char a[100005];\r\n\r\n    int main(){\r\n            int i, x, u, v, sz, n;\r\n            \/\/while(scanf(\"%s\",a)==1){\r\n            cin &gt;&gt; a;\r\n            for (i = 0; i &lt; 10; i++) \r\n            adj[i].clear();\r\n            for (i = 0; a[i]; i++) \r\n            {\r\n                AIN('0', a[i], '9');\r\n                d[i] = -1;\r\n                \/\/    if(i &amp;&amp; a[i-1]==a[i] &amp;&amp; i&lt;n-1 &amp;&amp; a[i+1]==a[i]) continue;\r\n                adj[a[i] - '0'].pb(i);\r\n            }\r\n            AIN(1, i, 100000);\r\n            n = i;\r\n            queue&lt;int&gt; q;\r\n            q.push(0);\r\n            d[0] = 0;\r\n            while (!q.empty()) \r\n            {\r\n                u = q.front();\r\n                if (u == n - 1)\r\n                break;\r\n                q.pop();\r\n                x = a[u] - '0';\r\n                sz = adj[x].size();\r\n                for (i = 0; i &lt; sz; i++) \r\n                {\r\n                v = adj[x][i];\r\n                if (d[v] == -1) \r\n                {\r\n                    d[v] = d[u] + 1;\r\n                    q.push(v);\r\n                }\r\n                }\r\n                adj[x].clear();\r\n                if (u &amp;&amp; d[u - 1] == -1) {\r\n                    d[u - 1] = d[u] + 1;\r\n                    q.push(u - 1);\r\n                }\r\n                if (d[u + 1] == -1) {\r\n                    d[u + 1] = d[u] + 1;\r\n                    q.push(u + 1);\r\n                }\r\n            }\r\n            assert(u == n - 1 &amp;&amp; d[u] != -1);\r\n            cout &lt;&lt; d[u] &lt;&lt; endl;\r\n            \/\/}\r\n\r\n        return 0;\r\n    }\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_1900_3\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"java\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n\r\nimport java.util.*; \r\n    class GFG \r\n    { \r\n\r\n    \/\/ Method returns minimum step \r\n    \/\/ to reach end of array \r\n    static int getMinStepToReachEnd(int arr[], \r\n                                    int N) \r\n    { \r\n        \/\/ visit boolean array checks whether \r\n        \/\/ current index is previously visited \r\n        boolean []visit = new boolean[N]; \r\n\r\n        \/\/ distance array stores distance of \r\n        \/\/ current index from starting index \r\n        int []distance = new int[N]; \r\n\r\n        \/\/ digit vector stores indices where a \r\n        \/\/ particular number resides \r\n        Vector&lt;Integer&gt; []digit = new Vector[10]; \r\n        for(int i = 0; i &lt; 10; i++) \r\n            digit[i] = new Vector&lt;&gt;(); \r\n\r\n        \/\/ In starting all index are unvisited \r\n        for(int i = 0; i &lt; N; i++) \r\n            visit[i] = false; \r\n\r\n        \/\/ storing indices of each number \r\n        \/\/ in digit vector \r\n        for (int i = 1; i &lt; N; i++) \r\n            digit[arr[i]].add(i); \r\n\r\n        \/\/ for starting index distance will be zero \r\n        distance[0] = 0; \r\n        visit[0] = true; \r\n\r\n        \/\/ Creating a queue and inserting index 0. \r\n        Queue&lt;Integer&gt; q = new LinkedList&lt;&gt;(); \r\n        q.add(0); \r\n\r\n        \/\/ loop untill queue in not empty \r\n        while(!q.isEmpty()) \r\n        { \r\n            \/\/ Get an item from queue, q. \r\n            int idx = q.peek();     \r\n            q.remove(); \r\n\r\n            \/\/ If we reached to last \r\n            \/\/ index break from loop \r\n            if (idx == N - 1) \r\n                break; \r\n\r\n            \/\/ Find value of dequeued index \r\n            int d = arr[idx]; \r\n\r\n            \/\/ looping for all indices with value as d. \r\n            for (int i = 0; i &lt; digit[d].size(); i++) \r\n            { \r\n                int nextidx = digit[d].get(i); \r\n                if (!visit[nextidx]) \r\n                { \r\n                    visit[nextidx] = true; \r\n                    q.add(nextidx); \r\n\r\n                    \/\/ update the distance of this nextidx \r\n                    distance[nextidx] = distance[idx] + 1; \r\n                } \r\n            } \r\n\r\n            \/\/ clear all indices for digit d, \r\n            \/\/ because all of them are processed \r\n            digit[d].clear(); \r\n\r\n            \/\/ checking condition for previous index \r\n            if (idx - 1 &gt;= 0 &amp;&amp; !visit[idx - 1]) \r\n            { \r\n                visit[idx - 1] = true; \r\n                q.add(idx - 1); \r\n                distance[idx - 1] = distance[idx] + 1; \r\n            } \r\n\r\n            \/\/ checking condition for next index \r\n            if (idx + 1 &lt; N &amp;&amp; !visit[idx + 1]) \r\n            { \r\n                visit[idx + 1] = true; \r\n                q.add(idx + 1); \r\n                distance[idx + 1] = distance[idx] + 1; \r\n            } \r\n        } \r\n\r\n        \/\/ N-1th position has the final result \r\n        return distance[N - 1]; \r\n    } \r\n\r\n    \/\/ Driver Code \r\n    public static void main(String []args) \r\n    { \r\n    Scanner sc = new Scanner(System.in);\r\n    String str = sc.nextLine();\r\n    int n = str.length();\r\n        int [] arr = new int[n];\r\n        for(int i =0 ;i&lt;n;i++)\r\n        {\r\n        arr[i] = Character.getNumericValue(str.charAt(i));\r\n        }\r\n\r\n        System.out.println(getMinStepToReachEnd(arr, n)); \r\n    } \r\n    } \r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t <\/div>\r\n\t\t\t\t\t \r\n\t\t\t\t <\/div>\r\n <script>\r\n\t\tjQuery(function () {\r\n\t\t\tjQuery('#myTab_1900 a:first').tab('show')\r\n\t\t});\r\n\t\t\r\n\t\t\t\tjQuery(function(){\r\n\t\t\tvar b=\"fadeIn\";\r\n\t\t\tvar c;\r\n\t\t\tvar a;\r\n\t\t\td(jQuery(\"#myTab_1900 a\"),jQuery(\"#tab-content_1900\"));function d(e,f,g){\r\n\t\t\t\te.click(function(i){\r\n\t\t\t\t\ti.preventDefault();\r\n\t\t\t\t\tjQuery(this).tab(\"show\");\r\n\t\t\t\t\tvar h=jQuery(this).data(\"easein\");\r\n\t\t\t\t\tif(c){c.removeClass(a);}\r\n\t\t\t\t\tif(h){f.find(\"div.active\").addClass(\"animated \"+h);a=h;}\r\n\t\t\t\t\telse{if(g){f.find(\"div.active\").addClass(\"animated \"+g);a=g;}else{f.find(\"div.active\").addClass(\"animated \"+b);a=b;}}c=f.find(\"div.active\");\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\r\n\t\tfunction do_resize(){\r\n\r\n\t\t\tvar width=jQuery( '.tab-content .tab-pane iframe' ).width();\r\n\t\t\tvar height=jQuery( '.tab-content .tab-pane iframe' ).height();\r\n\r\n\t\t\tvar toggleSize = true;\r\n\t\t\tjQuery('iframe').animate({\r\n\t\t\t    width: toggleSize ? width : 640,\r\n\t\t\t    height: toggleSize ? height : 360\r\n\t\t\t  }, 250);\r\n\r\n\t\t\t  toggleSize = !toggleSize;\r\n\t\t}\r\n\r\n\r\n\t<\/script>\r\n\t\t\t\t\r\n\t\t\t<br \/>\n[forminator_quiz id=&quot;1937&quot;]<\/p>\n<p>This article tried to discuss <strong>Breadth First Search<\/strong>. Hope this blog helps you understand and solve the problem. To practice more problems on Breadth First Search you can check out <a href=\"#\"><\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Concepts Used Breadth First Search Difficulty Level Hard Problem Statement : Given a string , we are standing at the starting point and we have to reach end in minimum steps by following these rules: We can either jump to neighbour indices or, We can jump to a position with same value. Solution Approach : [&hellip;]<\/p>\n","protected":false},"author":52,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[114],"tags":[],"class_list":["post-1878","post","type-post","status-publish","format-standard","hentry","category-graphs-interview-questions"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Graphs Interview Questions | Hop Digits | Prepbytes<\/title>\n<meta name=\"description\" content=\"Idea Is to Consider Every Character Index, as a Vertex of a Graph Where There Is an Edge Between Next and Previous Indices and Between the Indices With Same Values.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/prepbytes.com\/blog\/hop-digits\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Graphs Interview Questions | Hop Digits | Prepbytes\" \/>\n<meta property=\"og:description\" content=\"Idea Is to Consider Every Character Index, as a Vertex of a Graph Where There Is an Edge Between Next and Previous Indices and Between the Indices With Same Values.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prepbytes.com\/blog\/hop-digits\/\" \/>\n<meta property=\"og:site_name\" content=\"PrepBytes Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prepbytes0211\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-01T09:46:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-28T23:52:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101564020-Article_355.png\" \/>\n<meta name=\"author\" content=\"Prepbytes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prepbytes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/prepbytes.com\/blog\/hop-digits\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/hop-digits\/\"},\"author\":{\"name\":\"Prepbytes\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\"},\"headline\":\"Hop Digits\",\"datePublished\":\"2020-07-01T09:46:36+00:00\",\"dateModified\":\"2022-03-28T23:52:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/hop-digits\/\"},\"wordCount\":424,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/hop-digits\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101564020-Article_355.png\",\"articleSection\":[\"Graphs Interview Questions\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prepbytes.com\/blog\/hop-digits\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prepbytes.com\/blog\/hop-digits\/\",\"url\":\"https:\/\/prepbytes.com\/blog\/hop-digits\/\",\"name\":\"Graphs Interview Questions | Hop Digits | Prepbytes\",\"isPartOf\":{\"@id\":\"http:\/\/43.205.93.38\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/hop-digits\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/hop-digits\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101564020-Article_355.png\",\"datePublished\":\"2020-07-01T09:46:36+00:00\",\"dateModified\":\"2022-03-28T23:52:20+00:00\",\"description\":\"Idea Is to Consider Every Character Index, as a Vertex of a Graph Where There Is an Edge Between Next and Previous Indices and Between the Indices With Same Values.\",\"breadcrumb\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/hop-digits\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prepbytes.com\/blog\/hop-digits\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prepbytes.com\/blog\/hop-digits\/#primaryimage\",\"url\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101564020-Article_355.png\",\"contentUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101564020-Article_355.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prepbytes.com\/blog\/hop-digits\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/43.205.93.38\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Graphs Interview Questions\",\"item\":\"https:\/\/prepbytes.com\/blog\/category\/graphs-interview-questions\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Hop Digits\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/43.205.93.38\/#website\",\"url\":\"http:\/\/43.205.93.38\/\",\"name\":\"PrepBytes Blog\",\"description\":\"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING\",\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/43.205.93.38\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"http:\/\/43.205.93.38\/#organization\",\"name\":\"Prepbytes\",\"url\":\"http:\/\/43.205.93.38\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"contentUrl\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"width\":160,\"height\":160,\"caption\":\"Prepbytes\"},\"image\":{\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/prepbytes0211\/\",\"https:\/\/www.instagram.com\/prepbytes\/\",\"https:\/\/www.linkedin.com\/company\/prepbytes\/\",\"https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA\"]},{\"@type\":\"Person\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\",\"name\":\"Prepbytes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"caption\":\"Prepbytes\"},\"url\":\"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Graphs Interview Questions | Hop Digits | Prepbytes","description":"Idea Is to Consider Every Character Index, as a Vertex of a Graph Where There Is an Edge Between Next and Previous Indices and Between the Indices With Same Values.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/prepbytes.com\/blog\/hop-digits\/","og_locale":"en_US","og_type":"article","og_title":"Graphs Interview Questions | Hop Digits | Prepbytes","og_description":"Idea Is to Consider Every Character Index, as a Vertex of a Graph Where There Is an Edge Between Next and Previous Indices and Between the Indices With Same Values.","og_url":"https:\/\/prepbytes.com\/blog\/hop-digits\/","og_site_name":"PrepBytes Blog","article_publisher":"https:\/\/www.facebook.com\/prepbytes0211\/","article_published_time":"2020-07-01T09:46:36+00:00","article_modified_time":"2022-03-28T23:52:20+00:00","og_image":[{"url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101564020-Article_355.png","type":"","width":"","height":""}],"author":"Prepbytes","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Prepbytes","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/prepbytes.com\/blog\/hop-digits\/#article","isPartOf":{"@id":"https:\/\/prepbytes.com\/blog\/hop-digits\/"},"author":{"name":"Prepbytes","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e"},"headline":"Hop Digits","datePublished":"2020-07-01T09:46:36+00:00","dateModified":"2022-03-28T23:52:20+00:00","mainEntityOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/hop-digits\/"},"wordCount":424,"commentCount":0,"publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/hop-digits\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101564020-Article_355.png","articleSection":["Graphs Interview Questions"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prepbytes.com\/blog\/hop-digits\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prepbytes.com\/blog\/hop-digits\/","url":"https:\/\/prepbytes.com\/blog\/hop-digits\/","name":"Graphs Interview Questions | Hop Digits | Prepbytes","isPartOf":{"@id":"http:\/\/43.205.93.38\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/hop-digits\/#primaryimage"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/hop-digits\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101564020-Article_355.png","datePublished":"2020-07-01T09:46:36+00:00","dateModified":"2022-03-28T23:52:20+00:00","description":"Idea Is to Consider Every Character Index, as a Vertex of a Graph Where There Is an Edge Between Next and Previous Indices and Between the Indices With Same Values.","breadcrumb":{"@id":"https:\/\/prepbytes.com\/blog\/hop-digits\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prepbytes.com\/blog\/hop-digits\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prepbytes.com\/blog\/hop-digits\/#primaryimage","url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101564020-Article_355.png","contentUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101564020-Article_355.png"},{"@type":"BreadcrumbList","@id":"https:\/\/prepbytes.com\/blog\/hop-digits\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/43.205.93.38\/"},{"@type":"ListItem","position":2,"name":"Graphs Interview Questions","item":"https:\/\/prepbytes.com\/blog\/category\/graphs-interview-questions\/"},{"@type":"ListItem","position":3,"name":"Hop Digits"}]},{"@type":"WebSite","@id":"http:\/\/43.205.93.38\/#website","url":"http:\/\/43.205.93.38\/","name":"PrepBytes Blog","description":"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING","publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/43.205.93.38\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"http:\/\/43.205.93.38\/#organization","name":"Prepbytes","url":"http:\/\/43.205.93.38\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/","url":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","contentUrl":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","width":160,"height":160,"caption":"Prepbytes"},"image":{"@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/prepbytes0211\/","https:\/\/www.instagram.com\/prepbytes\/","https:\/\/www.linkedin.com\/company\/prepbytes\/","https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA"]},{"@type":"Person","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e","name":"Prepbytes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","caption":"Prepbytes"},"url":"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/"}]}},"_links":{"self":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1878","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/users\/52"}],"replies":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/comments?post=1878"}],"version-history":[{"count":10,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1878\/revisions"}],"predecessor-version":[{"id":8321,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1878\/revisions\/8321"}],"wp:attachment":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/media?parent=1878"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/categories?post=1878"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/tags?post=1878"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}