51nod官网_51nod题难度

51nod官网_51nod题难度1396 还是01串基准时间限制:1 秒空间限制:131072 KB分值: 20 难度:3级算法题 收藏 关注给定一个0-1串s,长度为n,下标从0开始,求一个位置k,满足0<=k<=n,并且子串s[0..k-1]中的0的个数与子串s[k..n-1]中1的个数相等。注意:(1)如果k=0,s[0..k-1]

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

基准时间限制:1 秒 空间限制:131072 KB 分值: 20 
难度:3级算法题

51nod官网_51nod题难度 收藏

51nod官网_51nod题难度 关注

给定一个0-1串s,长度为n,下标从0开始,求一个位置k,满足0<=k<=n, 并且子串s[0..k – 1]中的0的个数与子串s[k..n – 1]中1的个数相等。 注意:

(1) 如果k = 0, s[0..k – 1]视为空串
(2) 如果k = n, s[k..n – 1]视为空串
(3) 如果存在多个k值,输处任何一个都可以

(4) 如果不存在这样的k值,请输出-1

Input
就一行,包含一个0-1串S,长度不超过1000000。
Output
题目要求的k值
Input示例
01
Output示例
1

思路(月初第一水~):

维护两个前缀和即可。

对应枚举一个位子K。

暴力处理,时间复杂度O(n);

Ac代码:

#include<stdio.h>
#include<string.h>
using namespace std;
char a[1000500];
int cont0[1000500];
int cont1[1000500];
int main()
{
    while(~scanf("%s",a))
    {
        int n=strlen(a);
        for(int i=0;i<n;i++)
        {
            if(i==0)
            {
                if(a[i]=='0')cont0[0]=1,cont1[0]=0;
                else cont0[0]=0,cont1[0]=1;
            }
            else
            {
                cont1[i]=cont1[i-1];
                cont0[i]=cont0[i-1];
                if(a[i]=='1')cont1[i]++;
                else cont0[i]++;
            }
        }
        int flag=0;
        for(int i=0;i<=n;i++)
        {
            if(cont0[i-1]==cont1[n-1]-cont1[i-1])
            {
                flag=1;
                printf("%d\n",i);
                break;
            }
        }
        if(flag==0)printf("-1\n");
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169958.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 搭建JavaWeb服务器[通俗易懂]

    搭建JavaWeb服务器[通俗易懂]JDK安装可以参考 http://www.cnblogs.com/a2211009/p/4265225.htmlTomcat安装可参考1.由于服务器配置比较低综合考虑,选择ubuntu系

    2022年7月1日
    31
  • datax实现mysql数据同步

    datax实现mysql数据同步datax同步数据使用详解

    2022年5月17日
    82
  • 灰度测试与AB测试_测试种类有哪些

    灰度测试与AB测试_测试种类有哪些这个“常见”,是说当我们经历多了之后,会发现这个概念其实很常见,在当前你所处的这个人群中,发现大家都挂在嘴上。在最开始的测试学习中,其实很少提到这些概念,在职业生涯的前期,也很少需要考虑这些概念。分级测试一般用在系统测试阶段。分级测试,就是说对测试进行分级,区分什么重要、什么不重要,做区别对待。之所以需要区别对待,我总结有两个原因。一个是因为资源上的限制,时间、人力,让我们没有条件来做无差别覆盖。二是本身的限制,在测试阶段,提测质量往往是不尽人意的,只能是层层深入去做测试。.

    2025年5月22日
    7
  • 用Java IO流实现下载文件

    用Java IO流实现下载文件  @RequestMapping(value="download")   publicStringdownload(HttpServletResponseresponse,Modelmodel){             //通过文件名找出文件的所在目录      StringURL="D:/one/two.txt";      //得到要下载的文件…

    2022年5月30日
    49
  • 【JAVA面试必会】JMM高并发详解(java内存模型、JMM三大特征、volatile关键字 )「建议收藏」

    【JAVA面试必会】JMM高并发详解(java内存模型、JMM三大特征、volatile关键字 )「建议收藏」volatile一定能保证线程安全吗?禁止指令重排序volatile禁止指令重排序的原理。JMM就是Java内存模型(javamemorymodel)。因为在不同的硬件生产商和不同的操作系统下,内存的访问有一定的差异,所以会造成相同的代码运行在不同的系统上会出现各种问题。所以java内存模型(JMM)屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在各种平台下都能达到……………

    2025年9月15日
    7
  • JS字符串分割截取

    JS字符串分割截取1.函数:split()功能:把一个字符串按指定的分隔符分割存储到数组中。例子:str=”2018.12″;arr=str.split(“.”);//arr是一个包含”2018″和”12″的数组,arr[0]是2018,arr[1]是12。2.函数:join()功能:使用分隔符将一个数组合并为一个字符串。例子:varString=myArray.joi…

    2022年4月27日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号