竞赛讨论区 > 为什么只能过80%样例啊?求!!!

为什么只能过80%样例啊?求!!!

头像
&🐠
发布于 2020-07-26 09:40:43 APP内打开
赞 0 | 收藏 0 | 回复2 | 浏览630
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条回帖

回帖
加载中...
话题 回帖

本文相关内容

等你来战

查看全部

热门推荐