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.
- Change a decimal number into a binary and store it in string s.
- 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.
- Finally, return the value of the ith index in string s.
Implementation:
C++
// C++ Program to find ith character in // a binary string. #include <bits/stdc++.h> 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
<script> // Javascript Program to find ith // character in a binary String. let s = "" ;
function ReverseString(s)
{ let arr = s.split( "" );
for (let i = 0;
i < arr.length / 2; i++)
{
let temp = arr[i];
arr[i] = arr[arr.length - i -1];
arr[arr.length - i - 1] = temp;
}
return arr.join( "" );
} // Function to store // binary Representation function binary_conversion(m)
{ while (m != 0)
{
let tmp = m % 2;
s += tmp.toString();
m = Math.floor(m / 2);
}
s = ReverseString(s);
} // Function to find // ith character function find_character(n,m,i)
{ // Function to change
// decimal to binary
binary_conversion(m);
let s1 = "" ;
for (let x = 0; x < n; x++)
{
for (let 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 let m = 5, n = 2, i = 8; document.write(find_character(n, m, i)); // This code is contributed by patel2127 </script> |
PHP
<?php // Function to store binary Representation function binaryConversion( $s , $m ) {
while ( $m ) {
$temp = $m % 2;
$s .= strval ( $temp );
$m = (int)( $m / 2);
}
return strrev ( $s );
} // Function to find ith character function findCharacter( $n , $m , $i ) {
$s = "" ;
// Function to change decimal to binary
$s = binaryConversion( $s , $m );
$s1 = "" ;
for ( $x = 0; $x < $n ; $x ++) {
for ( $j = 0; $j < strlen ( $s ); $j ++) {
if ( $s [ $j ] == "1" ) {
$s1 .= "10" ;
} else {
$s1 .= "01" ;
}
}
// Assign s1 string to s string
$s = $s1 ;
$s1 = "" ;
}
$e = ord( $s [ $i ]);
$r = ord( '0' );
return $e - $r ;
} // Driver code $m = 5;
$n = 2;
$i = 8;
echo findCharacter( $n , $m , $i );
?> |
Output
1
Time complexity : O(|S|*2^n)
Auxiliary Space : O(n)
Refer Set-2 for an optimized solution.