【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'。
对于一些特殊的字符:
- 'z' 会变成 'A'。
- 'Z' 会变成 '0'。
- '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");
}
【C/C++】小红的字符串 / 中兴捧月的更多相关文章
- “中兴捧月”比赛之——二叉查找树(BST)树的最短路径Java求解
问题描述: BST树,又称二叉查找树,求其到所有叶子节点路径的最小值 测试用例一: 10 5 20 返回15: 测试用例二: 100 20 70 110 120 10 null null 89 nu ...
- MapReduce:实现文档倒序排序,且字符串拼接+年+月+日
写出MapReduce程序完成以下功能. input1: -- a -- b -- c -- d -- a -- b -- c -- c input2: -- b -- a -- b -- d -- ...
- mysql时间字符串按年/月/天/时分组查询
SELECT DATE_FORMAT( deteline, "%Y-%m-%d %H" ) , COUNT( * ) FROM test GROUP BY DATE_FORMAT( ...
- mysql时间字符串按年/月/天/时分组查询 -- date_format
SELECT DATE_FORMAT( deteline, "%Y-%m-%d %H" ) , COUNT( * ) FROM test GROUP BY DATE_FORMAT( ...
- 《PHP程序员面试笔试宝典》——如何进行自我介绍?
本文摘自<PHP程序员面试笔试宝典> PHP面试技巧分享,PHP面试题,PHP宝典尽在"琉忆编程库". 自我介绍是面试中至关重要的一个步骤,很多面试官对求职者提出的第一 ...
- python初级 2 字符串格式化
一.回顾 上次我们讲解的数据类型,有int,float,str,bool,NoneType五种 前两种和后两种都比较简单,str较为复杂 二.字符串格式化的使用场景: 有一种字符串, xxx 的内容都 ...
- 一个demo学会js
全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算 ...
- MICAPS数据文件格式
MICAPS系统的数据结构是建立在文件系统基础上的.其特点是: l 利用目录来区分不同的数据来源.要素和层次,即不同的数据来源.要素和层次的数据要放在不同的目录中.同一目录中的数据只能有时次或时效上 ...
- [No000003]现代版三十六计,计计教你如何做人
<现代版三十六计,计计教你如何做人> …………………………………………………………………………………… 第1计施恩计 在人际交往中,见到给人帮忙的机会,要立马扑上去,像一只饥饿的松鼠扑向地 ...
随机推荐
- 2020 天翼杯 部分wp
天翼杯 呜呜呜呜 是我太菜了 Web APItest 源码 const express = require("express"); const cors = require(&qu ...
- Part 61 to 63 Talking about partial class and partial method in C#
部分类和部分方法 部分类是用partial声明的类,它允许我们把一个类分割成两个或多个类,当应用程序编译的完成的时候,多个部分类会结合成一个类,同时partial关键字也可以用于声明结构和接口. 那么 ...
- js中修改this指向的方法(call,apply,bind)
前言:call.apply和bind都是为了改变某个函数运行时的this指向的,对于前端人员来说,关于this的掌握程度,直接决定了前端水平的高低.下面我们就来简单浅显易懂的来看一下es5中常用的三种 ...
- python实现图片色素的数值运算(加减乘除)和逻辑运算(与或非异或)
目录: (一)数值运算(加减乘除) (二)逻辑运算(与或非异或) 正文: (一)数值运算(加减乘除) opencv自带图片色素的处理函数------相加:add() 相减:subtract() ...
- [luogu7831]Travelling Merchant
考虑不断找到以下两种类型的边,并维护答案: 1.终点出度为0的边,那么此时即令$ans_{x}=\min(ans_{x},\max(r,ans_{y}-p))$ 2.(在没有"终点出度为0 ...
- 微信小程序的优点(水一篇)
- 快速的加载 - 更强大的能力 - 原生的体验 - 易用且安全的微信数据开放 - 高效和简单的开发 摘自微信官方文档 https://developers.weixin.qq.com/minipro ...
- java配置方法
1.新建一个Config文件夹 2.代码 package com.shao.config; import com.shao.pojo.User; import org.springframework. ...
- 数字逻辑实践4->面向硬件电路的设计思维--FPGA设计总述
本文是对实验课上讲解的"面向硬件电路的设计思维"的总结,结合数字逻辑课本,进行提炼和整理. 主要来源是课件与本人整理,部分参考了网络大佬的博客. 本文主要介绍不同于之前软件设计思维 ...
- 17 款程序员必备 Chrome扩展插件,爱了爱了!
整理:小哈学Java 目录 美化 Just Black 午夜黑官方主题 Dark Reader 暗黑主题 为什么你们就是不能加个空格呢? 标签管理 Momentum [新标签页] Tab Manage ...
- NOIOL #2 爆零记
没有假是真的爆零了,原因:万恶的文操.不管怎样写份题解吧. T1: 做题经历:看了下题发现:不是 edu 的原题吗?兴奋地拿出赛中写的程序搞上去. 大约比赛开始 30min 后开始发现 \(k\) 可 ...