# Find i’th Index character in a binary string obtained after n iterations

• Difficulty Level : Medium
• Last Updated : 24 May, 2021

Given a decimal number m, convert it into a binary string and apply n iterations. In each iteration, 0 becomes “01” and 1 becomes “10”. Find the (based on indexing) index character in the string after the nth iteration.

Examples:

Become a success story instead of just reading about them. Prepare for coding interviews at Amazon and other top product-based companies with our Amazon Test Series. Includes topic-wise practice questions on all important DSA topics along with 10 practice contests of 2 hours each. Designed by industry experts that will surely help you practice and sharpen your programming skills. Wait no more, start your preparation today!

```Input : m = 5, n = 2, i = 3
Output : 1

Input :m = 3, n = 3, i = 6
Output : 1```

Recommended: Please solve it on “PRACTICE” first, before moving on to the solution.

1. Change a decimal number into a binary and store it in string s.
2. Run loop n times in each iteration. Run another loop of string length s to convert 0 to “01” and 1 to “10” and store in another string s1. After completion of each iteration, assign string s1 to s.
3. Finally, return the value of the ith index in string s.

## C++

 `// C++ Program to find ith character in``// a binary string.``#include ``using` `namespace` `std;` `// Function to store binary Representation``void` `binary_conversion(string &s, ``int` `m) {``  ``while` `(m) {``    ``int` `tmp = m % 2;``    ``s += tmp + ``'0'``;``    ``m = m / 2;``  ``}``  ``reverse(s.begin(), s.end());``}` `// Function to find ith character``int` `find_character(``int` `n, ``int` `m, ``int` `i) {` `  ``string s;` `  ``// Function to change decimal to binary``  ``binary_conversion(s, m);` `  ``string s1 = ``""``;``  ``for` `(``int` `x = 0; x < n; x++) {``    ``for` `(``int` `y = 0; y < s.length(); y++) {``      ``if` `(s[y] == ``'1'``)``        ``s1 += ``"10"``;``      ``else``        ``s1 += ``"01"``;     ``    ``}` `    ``// Assign s1 string in s string``    ``s = s1;``    ``s1 = ``""``;``  ``}``  ``return` `s[i] - ``'0'``;``}` `// Driver Function``int` `main() {``  ``int` `m = 5, n = 2, i = 8;``  ``cout << find_character(n, m, i);``  ``return` `0;``}`

## Java

 `// Java Program to find ith``// character in a binary String.``import` `java.io.*;``import` `java.util.Arrays;` `class` `GFG``{``static` `String s = ``""``;``static` `String ReverseString(String s)``{``    ``char``[] arr = s.toCharArray();``    ``for``(``int` `i = ``0``;``            ``i < arr.length / ``2``; i++)``    ``{``        ``char` `temp = arr[i];``        ``arr[i] = arr[arr.length - i -``1``];``        ``arr[arr.length - i - ``1``] = temp;``    ``}``    ``return` `new` `String(arr);``}` `// Function to store``// binary Representation``static` `void` `binary_conversion(``int` `m)``{``    ``while` `(m != ``0``)``    ``{``        ``int` `tmp = m % ``2``;``        ``s += Integer.toString(tmp);``        ``m = (``int``)(m / ``2``);``    ``}``    ` `    ``s = ReverseString(s);``}` `// Function to find``// ith character``static` `int` `find_character(``int` `n,``                          ``int` `m,``                          ``int` `i)``{    ``    ``// Function to change``    ``// decimal to binary``    ``binary_conversion(m);` `    ``String s1 = ``""``;``    ``for` `(``int` `x = ``0``; x < n; x++)``    ``{``        ``for` `(``int` `y = ``0``;``                 ``y < s.length(); y++)``        ``{``            ``if` `(s.charAt(y) == ``'1'``)``            ``s1 += ``"10"``;``            ``else``            ``s1 += ``"01"``;    ``        ``}``        ` `        ``// Assign s1 String``        ``// in s String``        ``s = s1;``        ``s1 = ``""``;``    ``}``    ` `    ``return` `s.charAt(i) - ``'0'``;``}` `// Driver Code``public` `static` `void` `main(String args[])``{``    ``int` `m = ``5``, n = ``2``, i = ``8``;``    ``System.out.print(``               ``find_character(n, m, i));``}``}` `// This code is contributed by``// Manish Shaw(manishshaw1)`

## Python3

 `# Python3 Program to find ith character in``# a binary string.` `# Function to store binary Representation``def` `binary_conversion(s, m):``    ``while``(m):``        ``temp ``=` `m ``%` `2``        ``s ``+``=` `str``(temp)``        ``m ``=` `m ``/``/` `2``    ` `    ``return` `s[::``-``1``]` `# Function to find ith character``def` `find_character(n, m, i):``    ``s ``=` `""`  `# Function to change decimal to binary``    ``s ``=` `binary_conversion(s, m)``    ``s1 ``=` `""` `    ``for` `x ``in` `range``(n):``        ``for` `j ``in` `range``(``len``(s)):``            ``if` `s[j] ``=``=` `"1"``:``                ``s1 ``+``=` `"10"``            ``else``:``                ``s1 ``+``=` `"01"` `    ``# Assign s1 string in s string    ``        ``s ``=` `s1``        ``s1 ``=` `""``    ``e ``=` `ord``(s[i])``    ``r ``=` `ord``(``'0'``)` `    ``return` `e``-``r` `# Driver code``m, n, i ``=` `5``, ``2``, ``8` `print``(find_character(n,m,i))` `# This code is contributed by mohit kumar 29`

## C#

 `// C# Program to find ith``// character in a binary string.``using` `System;` `class` `GFG``{``    ``static` `string` `ReverseString(``string` `s)``    ``{``        ``char``[] arr = s.ToCharArray();``        ``Array.Reverse(arr);``        ``return` `new` `string``(arr);``    ``}``    ` `    ``// Function to store``    ``// binary Representation``    ``static` `void` `binary_conversion(``ref` `string` `s,``                                  ``int` `m)``    ``{``        ``while` `(m != 0)``        ``{``            ``int` `tmp = m % 2;``            ``s += tmp.ToString();``            ``m = (``int``)(m / 2);``        ``}``        ` `        ``s = ReverseString(s);``    ``}``    ` `    ``// Function to find``    ``// ith character``    ``static` `int` `find_character(``int` `n,``                              ``int` `m, ``int` `i)``    ``{    ``        ``string` `s = ``""``;` `        ``// Function to change``        ``// decimal to binary``        ``binary_conversion(``ref` `s, m);` `        ``string` `s1 = ``""``;``        ``for` `(``int` `x = 0; x < n; x++)``        ``{``            ``for` `(``int` `y = 0; y < s.Length; y++)``            ``{``                ``if` `(s[y] == ``'1'``)``                ``s1 += ``"10"``;``                ``else``                ``s1 += ``"01"``;    ``            ``}``            ` `            ``// Assign s1 string``            ``// in s string``            ``s = s1;``            ``s1 = ``""``;``        ``}``        ` `        ``return` `s[i] - ``'0'``;``    ``}` `    ``// Driver Code``    ``static` `void` `Main()``    ``{``        ``int` `m = 5, n = 2, i = 8;``        ``Console.Write(find_character(n, m, i));``    ``}``}` `// This code is contributed by``// Manish Shaw(manishshaw1)`

## Javascript

 ``
Output:
`1`

Refer Set-2 for an optimized solution.

My Personal Notes arrow_drop_up