Find i’th Index character in a binary string obtained after n iterations
Last Updated :
08 Dec, 2023
Improve
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.