zoukankan      html  css  js  c++  java
  • 【C/C++】小红的字符串 / 中兴捧月

    考试的时候想复杂了,其实直接一边写放进set里去重就可以了
    很有意思
    自己的理解就是cpp的map+set或者就是set可以完成大多数java的hashset操作

    链接:https://ac.nowcoder.com/acm/problem/221493
    来源:牛客网

    题目描述
    小红有一个字符串,她每次操作可以改变一个字符的值。
    对于'a'、'b'、'c'、……、'y'等小写字母,小红每次操作可以把该字母变成比它大一位的字母,即变成'b'、'c'、'd'、……、'z'。
    对于'A'、'B'、'C'、……、'Y'等大写字母,小红每次操作可以把该字母变成比它大一位的字母,即变成'B'、'C'、'D'、……、'Z'。
    对于'0'、'1'、'2'、……、'8'等数字,小红每次操作可以把该数字变成比它大一位的数字,即变成'1'、'2'、'3'、……、'9'。
    对于一些特殊的字符:

    1. 'z' 会变成 'A'。
    2. 'Z' 会变成 '0'。
    3. '9' 会变成 'a'。
      现在小红想使这个字符串不存在任意相同的两个字符,你能输出这个最小的操作次数吗?

    输入描述:
    第一行一个正整数nn,代表字符串的长度。
    接下来一个长度为nn的,仅包含小写字母、大写字母或数字的字符串。

    输出描述:
    如果小红无法达成目的,则输出 -1 ,否则输出最小的操作次数。

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int n;
        string str;
        scanf("%d", &n);
        cin >> str;
        int cnt = 0;
    
        if (n > 62)
        {
            cout << -1 << endl;
            return 0;
        }
    
        set<char> st;
        for (int i = 0; i < n; i++)
        {
            char ch = str[i];
            while (st.count(ch) == 1)
            {
                cnt++;
                if ( ch == 'z' )
                {
                    ch = 'A'; continue;
                }
                else if ( ch == 'Z')
                {
                    ch = '0'; continue;
                }
                else if ( ch == '9' )
                {
                    ch = 'a'; continue;
                }
                ch++;
            }
            st.insert(ch);
        }
    
        // auto it = st.begin();
        // while(it != st.end())
        // {
        //     cout << *it << endl;
        //     it++;
        // }
        cout << cnt << endl;
    
        system("pause");
    }
    
  • 相关阅读:
    CAF(C++ Actor Framework)介绍
    Android C++打印函数调用栈
    80%应聘者都不及格的JS面试题
    二叉树的最近公共祖先--递归解法
    mysql的InnoDB引擎的行记录格式ROW_FORMAT
    Docker安装mysql 集群(pxc方式)及负载均衡实践
    主机ping不通虚拟机,虚拟机可以ping通主机解决方式
    springboot源码解析
    springmvc源码解析
    寻找两个正序数组的中位数
  • 原文地址:https://www.cnblogs.com/kinologic/p/14756054.html
Copyright © 2011-2022 走看看