zoukankan      html  css  js  c++  java
  • 4.6组队赛G题The Last Wish 字符串处理

    题意:要满足最后的串两两不同,且尽量用最小的字母去替换重复的。都是小写字母。所以大于26个的字母的字符串肯定不能满足了

    #include <bits/stdc++.h>
    
    using namespace std;
    //这里用到两个标记数组
    bool flag1[26];//标记全局出现的字母
    bool flag2[26];//标记替换后的字母
    
    int main()
    {
    
        string s;
        cin>>s;
        if(s.length()>26) {
            puts("IMPOSSIBLE");
            return 0;
        }
    
        for(int i = 0; i < s.length(); i++) {
            flag1[s[i] - 'a'] = true;//先把全部出现的字符标记一遍,因为下面的是就近遍历,这里需要把全局也就是后面的也标记下
        }
        for(int i = 0; i < s.length(); i++) {
            if(!flag2[s[i] - 'a']) {
                flag2[s[i]-'a'] = true;
                printf("%c",s[i]);
            }//重复出现就不打印了
            else {//如果遇见重复的
                for(int j = 0; j < 26; j++) {//尽量用小的字母去替换
                    if(!flag2[j]&&!flag1[j]) {
                        flag2[j] = true ;//把替换后的字母也标记
                        printf("%c",'a'+j);
                        break;
                    }
                }
            }
        }
        cout<<endl;
        return 0;
    }
    



  • 相关阅读:
    Python基础-序列化模块
    dubbox
    小型供销系统
    MyBatis与SpringBoot整合案例(一)
    SpringBoot第二节
    SpringBoot第一节
    Dubbo案例SSM整合
    Dubbo生产者和消费者
    Zookeeper实战分布式锁
    Zookeeper Watcher和选举机制
  • 原文地址:https://www.cnblogs.com/zhangmingzhao/p/7256642.html
Copyright © 2011-2022 走看看