GFG App
Open App
Browser
Continue

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

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:

```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.

Implementation:

## 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`

Time complexity : O(n^2)
Auxiliary Space : O(n)

Refer Set-2 for an optimized solution.

My Personal Notes arrow_drop_up