class Solution {
public:
/**
* 位移后二进制串的十进制值
* @param str string字符串 二进制字符串
* @param k int整型 循环位移次数
* @return long长整型
*/
long long rotateRight(string str, int k) {
//string str1=str+str;
int a[100][2]={0};
int j=0,z=0;
for(int i=0;i<str.size();i++)
{
if(str[i]=='0')
{
a[j][0]=i;
j++;
}
else
{
a[z][1]=i;
z++;
}
}
j=0,z=0;
str1=str;
for(int i=0;i<str.size();i++)// write code here
{
if(str[i]=='0')
{
str1[i]=str[(a[j][0]-k+str.size())%str.size()];
j++;
}
else
{
str1[i]=str[(a[z][1]-k+str.size())%str.size()];
z++;
}
}
//cout<<str<<endl;
long long ans=0;
//long long len=str1.size();
for(int i=0;i<str.size();i++)
{
if(str1[i]=='1')
ans+=pow(2,str.size()-i-1);
}
return ans;
}
private:
string str1;
};
全部评论
(2) 回帖