Balanced Bitstring


题意:判断长度为n的串中的每个长度为k的子串是否0和1相等,字符串中的问号既可以是1也可以是0。
解题思路:
例如n=10 ,k=4 对于 s[0~3] 和 s[1~4] 我们可以发现1~3的部分是相同的,那么不难发现0和4相同,同理可得s[2]和s[5]也是相同的因此若该串合理就一定是k循环节子串,最后我们只需要判断前k个字母是否可以构造出一半1和一半0 ,如果1或者0的个数已经大于一半了一定构造不出来,否则一定可以构造出来。

代码:

#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=300010;
bool f[N];
// x _ _ _ _    _ _ _ _ x
string s;
int main()
{
   
    // ?00 000 100
    int _;
    cin>>_;
    while(_--)
    {
   
      int n,k;
      cin >> n >> k;
      cin>>s;
      bool flag=true;
      for(int i=0;i<n;i++)
      {
   
          if(s[i]=='?' && s[i%k]=='?')
            continue;
         if(s[i]=='?' && s[i%k] != '?')
            continue;
         if(s[i]!='?' && s[i%k] == '?')
            {
   
                s[i%k] =s[i];
                continue;
            }
            if(s[i]!='?' && s[i%k]!='?' && s[i]!=s[i%k])
            {
   
                flag=false;
                break;
            }
      }
      int s1=0;
      int s2=0;
      if(!flag)
      {
   
        cout<<"NO"<<endl;
        continue;
      }
      for(int i=0;i<k;i++)
      {
   
        s1+=(s[i]=='0');
        s2+=(s[i]=='1');
      }
      if(max(s1,s2)>k/2)    cout<<"NO"<<endl;
      else      cout<<"YES"<<endl;
    }
}
全部评论

相关推荐

时间线:&nbsp;1.4-1.5:&nbsp;boss&nbsp;牛客&nbsp;官网&nbsp;实习僧海投了两天,&nbsp;感觉确实没啥招人的啊,&nbsp;心里凉了一半.1.6:&nbsp;中午快手约面,&nbsp;下午字节hr飞书私聊约面,&nbsp;当时想着第一次面大厂感觉三个过一个一面就已经赢了.1.7:&nbsp;下午&nbsp;3点大厂处女面,&nbsp;哈哈面试官是重邮红岩的直接保送;&nbsp;5点快手一面,&nbsp;我说这个是我的第二次大厂面试,&nbsp;面试官问要是拿到字节和快手选择哪个,&nbsp;我说昨天看了一晚上快手百分百选快手哈哈哈.&nbsp;晚上5.30字节约二面,&nbsp;快手约二面,&nbsp;小红书约一面.1.8:&nbsp;下午2点快手二面,&nbsp;聊天面体验非常好(当天电话确认入职时间);&nbsp;4点字节二面这次不是校友了,&nbsp;然后有一个CSS实现switch效果的忘记属性咋写了,&nbsp;感觉危了;&nbsp;7.30&nbsp;问字节hr是不是挂了;&nbsp;9点开始小红书一面,&nbsp;难死我了,&nbsp;但我还是笑着面完了,&nbsp;然后卸载了小红书,&nbsp;但是过了一会会小红书hr约二面,&nbsp;遂下回来了字节约三面.1.9:&nbsp;下午2点字节三面,&nbsp;依旧聊天+算法,&nbsp;自己太菜了有一个写错了,&nbsp;面完感觉又危了;&nbsp;5点面小红书20min结束(offer审批);5.30又去问字节hr是不是挂了,&nbsp;hr小姐姐说干嘛用一个句式,&nbsp;我说手写题又又又没写出来😂,&nbsp;2min后约hr面;8.30&nbsp;快手offer总结,&nbsp;自己运气好遇到了好公司好部门好面试官,&nbsp;字节剪映&nbsp;快手电商&nbsp;小红书支付的面试体验都非常好,&nbsp;不会的题会带你一步一步思考,&nbsp;流程也非常快全部都是当天推进,&nbsp;小红书是以分钟为单位推进.&nbsp;&nbsp;面经以及细节等我慢慢整理,&nbsp;&nbsp;以及保佑所有的审批不要出问题,&nbsp;我是真怕最后全过了0offer😂bg:&nbsp;重邮&nbsp;大数据&nbsp;蓝山工作室&nbsp;一段非大厂实习
独角仙梦境:这是真👻了
找实习记录
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务