在 n 次迭代后获得的二进制字符串中查找第 i 个索引字符
给定一个十进制数 m,将其转换为二进制字符串并应用 n 次迭代。在每次迭代中,0 变为“01”,1 变为“10”。第 n 次迭代后在字符串中查找(基于索引)索引字符。
例子:
Input : m = 5, n = 2, i = 3
Output : 1
Input :m = 3, n = 3, i = 6
Output : 1
推荐:请先在“练习”上解决,然后再继续解决。
1. 将十进制数转换成二进制,存入字符串s。
2. 在每次迭代中运行循环 n 次。运行另一个字符串长度为 s 的循环,将 0 转换为“01”,将 1 转换为“10”,并存储在另一个字符串s1 中。每次迭代完成后,将字符串s1 分配给 s。
3. 最后,返回字符串s 中第 i 个索引的值。
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
输出:
1
请参阅 Set-2 以获得优化的解决方案。