给定二进制字符串str ,任务是找到2的最大幂,该幂除以给定二进制数的十进制等效值。
例子:
Input: str = “100100”
Output: 2
22 = 4 is the highest power of 2 that divides 36 (100100).
Input: str = “10010”
Output: 1
方法:从右边开始,在二进制表示形式中计算0的数量,这是将2除以该数字的最高幂。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
using namespace std;
// Function to return the highest power of 2
// which divides the given binary number
int highestPower(string str, int len)
{
// To store the highest required power of 2
int ans = 0;
// Counting number of consecutive zeros
// from the end in the given binary string
for (int i = len - 1; i >= 0; i--) {
if (str[i] == '0')
ans++;
else
break;
}
return ans;
}
// Driver code
int main()
{
string str = "100100";
int len = str.length();
cout << highestPower(str, len);
return 0;
}
Java
// Java implementation of the approach
class GFG
{
// Function to return the highest power of 2
// which divides the given binary number
static int highestPower(String str, int len)
{
// To store the highest required power of 2
int ans = 0;
// Counting number of consecutive zeros
// from the end in the given binary string
for (int i = len - 1; i >= 0; i--)
{
if (str.charAt(i) == '0')
ans++;
else
break;
}
return ans;
}
// Driver code
public static void main(String[] args)
{
String str = "100100";
int len = str.length();
System.out.println(highestPower(str, len));
}
}
// This code is contributed by Code_Mech.
Python3
# Python3 implementation of the approach
# Function to return the highest power of 2
# which divides the given binary number
def highestPower(str, lenngth):
# To store the highest required power of 2
ans = 0;
# Counting number of consecutive zeros
# from the end in the given binary string
for i in range(lenngth-1,-1,-1):
if (str[i] == '0'):
ans+=1;
else:
break;
return ans;
# Driver code
def main():
str = "100100";
lenngth = len(str);
print(highestPower(str, lenngth));
if __name__ == '__main__':
main()
# This code contributed by PrinciRaj1992
C#
// C# implementation of the approach
using System;
class GFG
{
// Function to return the highest power of 2
// which divides the given binary number
static int highestPower(String str, int len)
{
// To store the highest required power of 2
int ans = 0;
// Counting number of consecutive zeros
// from the end in the given binary string
for (int i = len - 1; i >= 0; i--)
{
if (str[i] == '0')
ans++;
else
break;
}
return ans;
}
// Driver code
public static void Main(String[] args)
{
String str = "100100";
int len = str.Length;
Console.WriteLine(highestPower(str, len));
}
}
/* This code contributed by PrinciRaj1992 */
PHP
= 0; $i--)
{
if ($str[$i] == '0')
$ans++;
else
break;
}
return $ans;
}
// Driver code
$str = "100100";
$len = strlen($str);
echo highestPower($str, $len);
// This code is contributed by Ryuga
?>
输出:
2