首页 > 字节8.9笔试第一题讨论
头像
学校乱写的
编辑于 2020-08-09 23:58
+ 关注

字节8.9笔试第一题讨论

字节8.9笔试第一题

第一题我的思路是用双指针表示一个区间,然后把区间内的字符放到multiset内,区间大小就是数量最多的字符的个数+m.
自己测试的十几个数据都过了,为啥提交以后是0%?
有没有大佬帮忙看一下。
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{

    int m, n;
    string str;
    char* _begin;
    char* _end;
    multiset<char> ms;
    char maxchar;
    int maxcharnum = 0;
    long long maxnum = 0;
    cin >> n >> m;
    cin >> str;
    if(n == 1 || n - m == 1)
    {
        cout << n;
        return 0;
    }
    _begin = &str[0];
    _end = &str[0];
    cout << *_begin <<endl;
    cout << str.size() << " " << str[str.size()] << endl;
    while (_end != &str[str.size()])
    {
        ms.insert(*_end);
        if(ms.count(*_end) > maxcharnum) //选择数量最多的元素
        {
            maxcharnum = ms.count(*_end);
            maxchar = *_end;
        }
        _end++;
        if(maxcharnum + m < (_end - _begin))
        {
            ms.erase(ms.find(*_begin));
            _begin++;
            if(maxchar == *_begin)
                maxcharnum--;
        }
        else
        {
            maxnum = max(maxnum, (_end - _begin));
        }
    }
    cout << maxnum;
    return 0;
}
























全部评论

(1) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐