• hihocoder #1485 : hiho字符串


    求h  i   o前缀和 

    枚举每个位子  二分结束的位子  恰好是2个h 一个 i 一个  o

    #include<cstdio>
    #include<cstring>
    #include<map>
    #include<iostream>
    #include<algorithm>
    #include<math.h>
    #include<map>
    #include<queue>
    #include<set>
    #include<vector>
    using namespace std;
    
    
    #define inf  1000000007
    #define ll long long
    #define MAXN  100010
    
    
    char s[MAXN];
    int h[MAXN],ii[MAXN],o[MAXN];
    
    int main()
    {
        while(scanf("%s",s+1)!=EOF)
        {
            int len=strlen(s+1);
            h[0]=0;
            ii[0]=0;
            o[0]=0;
            for(int i=1;i<=len;i++)
            {
                h[i]=h[i-1];
                ii[i]=ii[i-1];
                o[i]=o[i-1];
                if(s[i]=='h')
                    h[i]++;
                else if(s[i]=='i')
                    ii[i]++;
                else if(s[i]=='o')
                    o[i]++;
            }
            int mx=10000000;
            for(int i=1;i<=len;i++)
            {
                int l=i;
                int r=len;
                int ans=10000000;
                while(l<=r)
                {
                    int mid=(l+r)>>1;
                    if(h[mid]-h[i-1]==2&&ii[mid]-ii[i-1]==1&&o[mid]-o[i-1]==1)
                    {
                        ans=mid;
                        r=mid-1;
                    }
                    else if(h[mid]-h[i-1]>2||ii[mid]-ii[i-1]>1||o[mid]-o[i-1]>1)
                    {
                        r=mid-1;
                    }
                    else
                        l=mid+1;
                }
                if(ans==100000000)
                    ;
                else
                    mx=min(mx,ans-i+1);
            }
            if(mx==10000000)
                mx=-1;
            cout<<mx<<endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Java Object part1
    StringBuffer StringBuilder append
    Java equal
    java Classloader
    Java NIO
    Oracle中Blob和Clob
    Java8 Lambda 表达式
    HashMap分析 + 哈希表
    android自定义控件之滚动广告条
    android自定义控件之模仿优酷菜单
  • 原文地址:https://www.cnblogs.com/cherryMJY/p/7811077.html
Copyright © 2020-2023  润新知