• 4.14 每日一题题解


    牛牛的牛可乐

    涉及知识点:

    • 思维/STL

    solution:

    • (题意是找长度最长且N K L数量相等的子串)
    • (我们先考虑另一个简单的题目:)
    • (一个长度为n,仅由"N","K"组成的字符串,请找出最长的、包含相同数目"N","K"的子串)
    • (做法就是遍历字符串,记录N和K的差值x,用map记录差值,map[x] = i)
    • (如果下一次差值等于x的下标为j,那么[i+1,j]是包含相同数目的"N","K")
    • (回到这道题目,做法基本上一样:)
    • (记录N和K的差值x,N和L的差值y,用map<pair(x,y)>记录差值,map<pair(x,y)> = i)
    • (如果下一次差值等于pair(x,y)的下标为j,那么[i+1,j]是包含相同数目的"N","K","L”)

    std:

    #include <bits/stdc++.h>
    using namespace std;
    map< pair<int ,int> , int > mp;
    char s[200005];
    int main()
    {
        int n;
        int x = 0 ,y = 0,ans = 0;
        scanf("%d",&n);
        scanf("%s",s+1);
        mp[ make_pair(0 , 0) ] = 0;
        for(int i=1;i<=n;i++){
            if(s[i] == 'N')
                x++,y++;
            if(s[i] == 'K')
                x--;
            if(s[i] == 'L')
                y--;
            if(mp.find( make_pair(x,y) ) == mp.end())
                mp[make_pair(x,y)] = i;
            else
                ans = max(ans , i - mp[ make_pair(x,y) ]);
        }
        printf("%d
    ",ans);
        return 0;
    }
    
  • 相关阅读:
    测试用例原理以及设计方法
    软件测试方法大汇总(转)
    黑盒测试用例大集
    博客第一篇章
    什么是Shell脚本
    部署 Django
    Django 国际化和本地化
    Django与CSRF 、AJAX
    认证系统 Authentication
    Django与缓存
  • 原文地址:https://www.cnblogs.com/QFNU-ACM/p/12696367.html
Copyright © 2020-2023  润新知