B3956 [GESP202403 三级] 字母求和

[GESP202403 三级] 字母求和

题目描述

小杨同学发明了一种新型密码,对于每一个小写英文字母,该小写字母代表了一个正整数,即该字母在字母顺序中的位置,例如字母 a 代表了正整数 1 1 1,字母 b 代表了正整数 2 2 2;对于每一个大写英文字母,该大写字母代表了一个负整数,即该字母的 ASCII 码的相反数,例如字母 A 代表了负整数 − 65 -65 65。小杨同学利用这种放缩对一个整数进行了加密并得到了一个由大写字母和小写字母组成的字符串,该字符串中每个字母所代表数字的总和即为加密前的整数,例如 aAc 对应的加密前的整数为 1 + ( − 65 ) + 3 = − 61 1+(-65)+3=-61 1+(65)+3=61

对于给定的字符串,请你计算出它对应的加密前的整数是多少。

输入格式

第一行一个正整数 n n n,表示字符串中字母的个数。
第二行一个由大写字母和小写字母的字符串 T,代表加密后得到的字符串。

输出格式

输出一行一个整数,代表加密前的整数。

样例 #1

样例输入 #1

3
aAc

样例输出 #1

-61

提示

对全部的测试数据,保证 1 ≤ n ≤ 1 0 5 1 \leq n \leq 10^5 1n105

方法1
解题思路

本题要求我们计算给定字符串中每个字母所代表数字的总和。根据题目描述,对于小写字母,其代表的是字母在字母表中的位置;对于大写字母,其代表的是字母的 ASCII 码的相反数。

我们可以遍历字符串中的每个字符,判断其是大写字母还是小写字母,并计算相应的数值,累加到总和中。

具体步骤如下:

  1. 定义变量 sum,用于存储字母所代表数字的总和,初始化为 0。

  2. 遍历字符串中的每个字符 c:

    • 如果 c 是小写字母,将 c - 'a' + 1 的值加到 sum 上。
    • 如果 c 是大写字母,将 -(c) 的值加到 sum 上。
  3. 输出 sum 的值作为答案。

C++代码

#include <string>
#include <iostream>
using namespace std;int main() {int n;string T;cin >> n >> T;int sum = 0;for (char c : T) {if (islower(c)) {sum += c - 'a' + 1;} else {sum -= c;}}cout << sum << endl;return 0;
}

代码解释

  1. 首先,我们读取字符串的长度 n 和字符串 T

  2. 定义变量 sum,用于存储字母所代表数字的总和,初始化为 0。

  3. 使用范围循环遍历字符串 T 中的每个字符 c

  4. 对于每个字符 c,使用 islower(c) 函数判断其是否为小写字母:

    • 如果是小写字母,将 c - 'a' + 1 的值加到 sum 上。这里 c - 'a' + 1 计算的是字母 c 在字母表中的位置。
    • 如果是大写字母,将 -(c) 的值加到 sum 上。这里 -(c) 表示字母 c 的 ASCII 码的相反数。
  5. 输出 sum 的值作为答案。

复杂度分析

  • 时间复杂度: O ( n ) O(n) O(n),其中 n n n 是字符串的长度。我们需要遍历字符串中的每个字符。

  • 空间复杂度: O ( 1 ) O(1) O(1)。我们只使用了常数级别的额外空间。

输入输出样例

输入:

3
aAc

输出:

-61

该解决方案通过遍历字符串中的每个字符,判断其是大写字母还是小写字母,并计算相应的数值,最终得到字母所代表数字的总和。时间复杂度为 O ( n ) O(n) O(n),空间复杂度为 O ( 1 ) O(1) O(1)

方法2

C++代码

#include <iostream>
#include <string>
using namespace std;int main() {int n;string T;cin >> n >> T;int sum = 0;for (char c : T) {if (c >= 'a' && c <= 'z') {sum += c - 'a' + 1;} else {sum -= c;}}cout << sum << endl;return 0;
}

代码解释

在这个修改后的代码中,我们只改变了判断字符是大写字母还是小写字母的条件:

if (c >= 'a' && c <= 'z') {sum += c - 'a' + 1;
} else {sum -= c;
}
  • 如果字符 c 的 ASCII 码在 ‘a’ 到 ‘z’ 的范围内,说明它是小写字母,我们将 c - 'a' + 1 的值加到 sum 上。
  • 否则,字符 c 是大写字母,我们将 -(c) 的值加到 sum 上。

这种方式直接使用字符的 ASCII 码进行判断,避免了使用 islower 函数。

其他部分的代码保持不变。

复杂度分析

  • 时间复杂度: O ( n ) O(n) O(n),其中 n n n 是字符串的长度。我们需要遍历字符串中的每个字符。

  • 空间复杂度: O ( 1 ) O(1) O(1)。我们只使用了常数级别的额外空间。

输入输出样例

输入:

3
aAc

输出:

-61

这种修改只是改变了判断字符是大写字母还是小写字母的方式,使用字符的 ASCII 码进行判断,而不依赖于 islower 函数。代码的整体逻辑和复杂度分析保持不变。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/18790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【30天精通Prometheus:一站式监控实战指南】第10天:blackbox_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

亲爱的读者们&#x1f44b;   欢迎加入【30天精通Prometheus】专栏&#xff01;&#x1f4da; 在这里&#xff0c;我们将探索Prometheus的强大功能&#xff0c;并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。&#x1f680;   Prometheus是云原生和DevOps的…

Java——执行流程

一、执行流程 1、示例 //第一个Java程序 public class Hello{public static void main(String[] args){System.out.println("Hello World!");} } 编译&#xff1a; 执行&#xff1a; 我们可以看到这里的是类名&#xff0c;而不是字节码文件名 Hello.class &#…

通过 coze 快速构建自己的智能体机器人

通过 coze 快速构建自己的智能体机器人 coze 的使用 一&#xff09;coze 是什么 「Coze 扣子」AI Bot 开发平台。任何用户都可以快速、低门槛地搭建自己的 Chatbot&#xff0c;且平台支持用户将其一键发布到飞书、微信公众号、豆包等渠道。 二&#xff09;coze 怎么注册 1. …

【网络层】ICMP 因特网控制协议

文章目录 ICMP 含义以及作用ICMP协议解析结合ICMP协议和ping常见问题 ICMP 含义以及作用 ICMP&#xff1a;Internet control massage protocol 因特网控制协议 Internet控制报文协议ICMP是网络层的一个重要协议。 ICMP协议用来在网络设备间传递各种差错和控制信息&#xff0c;…

js 不同源的情况下 iframe还可以通讯吗

是的。即使在不同源的情况下&#xff0c;iframe之间仍然可以通过postMessage API进行通信。postMessage方法允许来自不同源的脚本采用异步方式进行有限的通信&#xff0c;这对于实现跨域通信非常有用。 基本原理 发送消息&#xff1a;使用window.postMessage方法从一个窗口向另…

QT6.2.4 MSVC2019 连接MySql5.7数据库,无驱动问题

1.下载 查询一下数据库驱动 qDebug()<<QSqlDatabase::drivers(); 结果显示&#xff0c;没有QMYSQL的驱动。 QList("QSQLITE", "QMARIADB", "QODBC", "QPSQL") MySql6.2.4驱动下载地址&#xff0c;如果是别的版本&#xff0c;…

在 OpenKylin 上安装 Docker

在 OpenKylin 上安装 Docker 可能会遇到与 Ubuntu 略有不同的包管理问题。以下是一个更详细的过程&#xff0c;确保你能正确添加 Docker 仓库并安装 Docker&#xff1a; 1. 确保系统更新 首先&#xff0c;更新系统包索引&#xff1a; sudo apt-get update2. 安装必要的依赖包…

用易查分制作研学活动报名,支持在线签名,一键导出报名统计表格!

学校组织研学活动时&#xff0c;需要家长扫码在线填写报名信息&#xff0c;确认安全承诺和手写签名&#xff0c;提交报名后希望分配报名号&#xff0c;应该如何实现&#xff1f; 易查分的新建填表功能就可以实现上述需求&#xff0c;下面就来教大家如何制作吧。 &#x1f4cc;使…

【LORA协议栈】工作记录

一、硬件资源 MCU型号&#xff1a;STM32F401xE。Lora芯片&#xff1a;SX1276。硬件看门狗。ATT7022E三相电能专用计量芯片。 二、功能简介 作为一个组件&#xff0c;通过485与网关或者各种子设备连接在一起。支持boot升级。通过SPI与LORA芯片通信。接收和发送数据。有3路通信…

Java设计模式-活动对象与访问者

活动对象 Java设计模式中&#xff0c;活动对象是指一个对象始终处于活动的状态&#xff0c;该对象包括一个线程安全的数据结构以及一个活跃的执行线程。 如上所示&#xff0c;ActiveCreature类的构造函数初始化一个线程安全的数据结构&#xff08;阻塞队列&#xff09;、初始化…

Mac | Mac M 芯片应用意外退出问题

现象问题 电脑配置&#xff1a;MacBook Pro M1&#xff0c;系统 Sonoma 很多小伙伴新买了 M 芯片的 MacBook&#xff0c;在下载下应用后进行安装&#xff0c;安装成功后却无法打开&#xff0c;提示意外退出。报错如图 原因 部分应用过适配了 M 芯片&#xff0c;但还是有些应…

乡村振兴与农业科技创新:加大农业科技研发投入,推动农业科技创新,促进农业现代化和美丽乡村建设

一、引言 在当代中国&#xff0c;乡村振兴已成为国家发展的重要战略之一。作为国民经济的基础&#xff0c;农业的发展直接关系到国家的稳定和人民的福祉。随着科技的不断进步&#xff0c;农业科技创新在推动农业现代化和美丽乡村建设中发挥着越来越重要的作用。本文旨在探讨如…

TPK系列——2W 3KVDC 隔离单,双输出 DC/DC 电源模块

TPK系列是一款2W并且有高隔离电压要求的理想产品&#xff0c;工业级温度范围–40℃到 105℃&#xff0c;在此温度范围内都可以稳定输出2W&#xff0c;并且效率非常高&#xff0c;高达89%&#xff0c;同时负载调整率非常低&#xff0c;对于有输出电压精度有要求的地方特别合适&a…

桌面上怎么记工作任务更加合理?能设置桌面提醒的便签软件

在快节奏的现代工作中&#xff0c;电脑已成为我们处理工作的主要工具。每天&#xff0c;我们都要面对电脑屏幕&#xff0c;处理大量的工作任务。为了更好地管理这些琐碎却重要的工作&#xff0c;将工作任务直接记录在桌面上&#xff0c;随时查看和调整&#xff0c;无疑是一种高…

北斗有源终端如何助力防灾应急通信

在自然灾害的严峻挑战面前&#xff0c;通信技术的可靠性成为了决定救援成功与否的关键。北斗有源终端作为先进的卫星通信工具&#xff0c;以其独特的优势和功能&#xff0c;正逐渐在防灾应急通信领域展现出其不可或缺的作用。通过其高精度的定位、稳定的信号传输和广泛的应用场…

[前端] import 和 require 引入图片的优劣比较

import和require都是JavaScript中引入模块的机制&#xff0c;但在Vue项目中&#xff0c;它们用于引入图片时有一些差异&#xff1a; import的优劣&#xff1a; 优点&#xff1a; 静态分析&#xff1a;import是ES6的静态导入语法&#xff0c;Webpack等构建工具可以在编译时进…

如何利用Firebase Hosting来托管网站

文章目录 如何利用Firebase Hosting来托管网站前提条件详细步骤1. 安装 Firebase CLI2. 登录 Firebase3. 初始化 Firebase 项目4. 准备网站文件5. 部署到 Firebase6. 配置自定义域名&#xff08;可选&#xff09; 常见问题 如何利用Firebase Hosting来托管网站 以下是更详细的…

Unity中将图片做成Prefab的步骤

Unity中将图片做成Prefab的步骤 在Unity中&#xff0c;将一张图片做成Prefab是一个常见的操作。Prefab是Unity中的一种资源类型&#xff0c;可以让你预先定义一个游戏对象&#xff0c;然后在场景中多次实例化它。以下是详细的步骤&#xff1a; 步骤一&#xff1a;准备图片资源…

易备数据备份软件:快速恢复 VMware ESXi 虚拟机

易备数据备份软件为 VMware ESXi 虚拟机提供完整的保护和备份功能。软件同时支持从 ESXi 或 vCenter 虚拟机的增量和差异备份中进行自动恢复。支持精细化的恢复&#xff0c;可将虚拟机恢复到某个特定的日期。 通过易备数据备份软件&#xff0c;可以实现虚拟机的异机恢复&#…

windows环境redis未授权利用手法总结

Redis未授权产生原因 1.redis绑定在0.0.0.0:6379默认端口&#xff0c;直接暴露在公网&#xff0c;无防火墙进行来源信任防护。 2.没有设置密码认证&#xff0c;可以免密远程登录redis服务 漏洞危害 1.信息泄露&#xff0c;攻击者可以恶意执行flushall清空数据 2.可以通过ev…