当前位置: 首页 > news >正文

字符最大间隔排列

B-完美串_牛客挑战赛79

思路:

代码:

    string s;
    cin>>s;
    array<int,26> cnt={0};
    for(auto c: s){
        ++cnt[c-'a'];
    }
    int n=s.size();
    auto check=[&](int x){
        auto c=cnt;
        array<int,26> lst;
        lst.fill(-x);
        for(int i=0; i<n; i++){
            int id=-1;
            for(int j=0; j<26; j++){
                if(c[j] && i-lst[j]>=x &&( id==-1 || c[j]>c[id])){
                    id=j;
                }
            }
            if(id==-1){
                return false;
            }
            --c[id], lst[id]=i;
        }
        return true;
    };
    for(int x= min(n,26); x>=1; x--){
        if(check(x)){
            cout<<x<<'\n';
            array<int,26> lst;
            lst.fill(-x);
            for(int i=0; i<n; i++){
                int id=-1;
                for(int j=0; j<26; j++){
                    if(cnt[j] && i-lst[j]>=x && (id==-1 || cnt[j]>cnt[id])){
                        id=j;
                    }
                }
                --cnt[id], lst[id]=i;
                cout<<char(id+'a');
            }
            cout<<'\n';
            break;
        }
    }

相关文章:

  • C++程序员职业规划
  • MySQL与Redis的缓存一致性问题
  • python-leetcode-删除链表的倒数第 N 个结点
  • 批量将 Excel 文档中的图片提取到文件夹
  • MySQL -- 数据类型
  • Java 枚举
  • SpringBoot自动装配的工作原理
  • python-docx - 读写更新 .docx 文件(Microsoft Word 2007+ )
  • Django系列教程(7)——路由配置URLConf
  • SpringBoot 入门基础
  • OBS推WebRTC流,并添加毫秒级时间显示
  • 【C++11】auto decltype nullptr
  • C++ 函数重载
  • 【Linux篇】进程状态(僵尸进程,孤儿进程),优先级与调度机制
  • BUUCTF逆向刷题笔记(13-?)持续更新
  • 【leetcode hot 100 24】两两交换链表中的节点
  • vulnhub-DC-9 SQL注入、“ssh端口敲门”、hydra爆破
  • 题解:AT_arc093_b [ABC092D] Grid Components
  • Python规则引擎DIY:从零开始构建规则引擎
  • Linux》》Ubuntu22.04下Docker的安装 Docker
  • 央行副行长:我们在研究丰富政策工具箱,将适时推出增量政策
  • 人社部:我国劳动力市场潜力足,韧性强
  • 稳就业稳经济五方面若干举措将成熟一项出台一项
  • 国家数据发展研究院在京正式揭牌
  • 2025年两院院士增选工作启动,名额均不超过100名
  • 拖车10公里收1900元?货车司机质疑收费过高,潮州饶平县市监局已介入