题解 CF656C 【Without Text】
简洁的题意:
读入一个字符串,将是大写的字符所在的英文字母表的索
引加到a中,将是小写的字符所在英文字母表的索引加到b
中,输出a-b
STL!!
首先,a索引是1,A也是1,我们需要通过map或者速度更快的unordered_map(unordered_map496ms,比map528ms快!)来储存英文字符索引
那么就是写52行初始化打表?no no no,可以借助for循环预处理,代码:
#include <iostream>
#include <unordered_map>
#include <cstring>
using namespace std;
unordered_map <char, int> small, big;
string s;
int main()
{
//预处理
small['a'] = 1;//先把a赋值
for(char x = 'b'; x <= 'z'; x++)//从b开始
{
small[x] = small[x - 1] + 1;//像递推一样赋值
}
big['A'] = 1;//先把A赋值
for(char x = 'B'; x <= 'Z'; x++)//从B开始
{
big[x] = big[x - 1] + 1;//像递推一样赋值
}
cin >> s;
int a, b;
a = b = 0;
for(string::iterator it = s.begin(); it != s.end(); ++it)//既然string是STL库的就要用STL专门的迭代器,下标用多了stack,set我看你怎么用……
{
if(*it >= 'A' && *it <= 'Z')//如果是大写,加上big[*it]的
{
a += big[*it];//map就用下标吧,况且这里不是遍历不用迭代器
}
if(*it >= 'a' && *it <= 'z')//如果是小写,加上small[*it]的
{
b += small[*it];//map就用下标吧,况且这里不是遍历不用迭代器
}
}
cout << a - b << endl;
return 0;//求赞哦,再见
}
无耻求赞
分类:
题解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现