GESP编程共123题,本题是整站第1398题,已经有人完成了本题,加油!
小杨同学发明了一种新型密码,对于每一个小写英文字母,该小写字母代表了一个正整数,即该字母在字母顺序中的位置,例如字母 a
代表了正整数 1,字母 b
代表了正整数 2;对于每一个大写英文字母,该大写字母代表了一个负整数,即该字母的 ASCII 码的相反数,例如字母 A
代表了负整数 −65。小杨同学利用这种放缩对一个整数进行了加密并得到了一个由大写字母和小写字母组成的字符串,该字符串中每个字母所代表数字的总和即为加密前的整数,例如 aAc
对应的加密前的整数为 1+(−65)+3=−61。
对于给定的字符串,请你计算出它对应的加密前的整数是多少。
第一行一个正整数 n,表示字符串中字母的个数。
第二行一个由大写字母和小写字母的字符串 T
,代表加密后得到的字符串。
输出一行一个整数,代表加密前的整数。
输入 #1
3 aAc
输出 #1
-61
对全部的测试数据,保证 1≤n≤10^5。
【解题思路】
此题需要计算给定字符串中字母的值之和。遍历输入的字符串的每一个字符,将大写、小写字母的索引值累加到ans中,最后输出答案。按照题目要求具体步骤如下:
1.输入字符串str,断言n 等于字符串str 的长度;
2.遍历字符串str,对每个字符,判断是大写还是小写或其他:
(1)小写为str[i] >= 'a' && str[i] <= 'z',其对应的索引值(a=1,b=2,...,z=26),计算时ans += str[i] - 'a' + 1;
(2)大写为str[i] >= 'A' && str[i] <= 'Z' ,其对应的索引值为该字母的ASCII 码的相反数计算直接减去即可:ans -= str[i];、
(3)若为其他字符,则触发断言错误
3.最后输出答案ans
【参考程序】
本站题目仅供学习,GESP版权归CCF所有,如有侵权请联系删除。站长陈老师QQ及微信:208234。