zoukankan      html  css  js  c++  java
  • CF C. Plasticine zebra (思维)

    题意

    是输入一个只有'w','b'的字符串,可以对他的任意位置切割成两个子串,切割后的右边的子串翻转后再和左边的子串拼起来会得到一个新的字符串,操作次数不限,问能得到的字符串中wb交替出现的最大的长度是多少

    分析:其实只要将原有的字符串进行复制拼接然后扫描一遍得出结果就可以了,为什么呢 ? 其实呀只要这样操作无论怎样操作反转 ,都可以在s+s这个串里找到相同的子串,也就可以大胆的得出这个玄学的结论 。

    不加一证明,表示不会,如果不相信可以手动操作一番

    #include<bits/stdc++.h>
    using namespace std ;
    string s1,s2;
    int main( )
    {
        int MAX=1,ans=1;
        cin>>s1;
        for(int i=1 ; i<s1.size() ; i++)
        {
            if(s1[i]!=s1[i-1])
            ans++;
            else
            ans=1;
            MAX=max(MAX,ans);
        }
        s2=s1;
        s1=s1+s2;
        int n=s1.size();
        ans = 1 ;
        //cout<<s1<<endl;
        for(int i=1 ; i<n ; i++)
        {
            if(s1[i]!=s1[i-1])
            ans++;
            else
            {
                MAX=max(MAX,ans);
                ans=1;
            }
        }
        if(MAX>n/2)
        MAX=n/2;
        printf("%d
    ",MAX);
        return 0;
    }
    View Code
  • 相关阅读:
    vue中的$nextTick()
    对SPA(单页面应用)的总结
    函数节流和函数防抖
    前端路由
    let、const
    深拷贝与浅拷贝
    小白浅谈Ajax基础
    关于BFC布局的那些事
    关于BFC的那些事
    Sass基础知识及语法
  • 原文地址:https://www.cnblogs.com/shuaihui520/p/9544748.html
Copyright © 2011-2022 走看看