字符串权值

题目描述

给定一个仅包含26个英文字母(大小写不敏感)的字符串,每个字母都有一个对应的权值,而整个字符串的权值就是字符串中每个字母对应权值的总和。请你写个程序求出字符串的权值,简单吧,快来A掉这道题。

输入

第一行一个数字t(0<t<=1000),代表测试数据的组数。

之后t组测试数据,每组测试数据有两行输入,第一行是26个用空格间隔的数字,按照顺序分别代表a-z(大小写不敏感)这26个字母的权值。第二行是一个由英文字母组成的字符串,即待求出权值的字符串。

测试数据保证单个字母对应的权值大于等于0且不超过int型数据范围,单个字符串的长度不超过10000。

输出

对于每组测试数据,请输出字符串的权值。

每个输出占一行。 

样例输入

1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
asdklfls

样例输出

84

提示

注意数据范围

思路:

我们用一个数组来存储每一次abc所代表的权值,然后遍历一下字符数组加上相应的权值即可;

#include<stdio.h>
#include<string.h>

int main()
{
	int n,c;
	long long int s=0,a[27];
	char b[10001];
	scanf("%d",&n);

	for(int i=0; i<n; i++)
	{
		for(int k=1; k<=26; k++)
		{
			scanf("%lld",&a[k]);
		}
		getchar();
		gets(b);
		c=strlen(b);
		for(int l=0; l<c; l++)
		{
			if(b[l]>='a'&&b[l]<='z')
			{
				s=s+a[b[l]-'a'+1];
			}
			if(b[l]>='A'&&b[l]<='Z')
			{
					s=s+a[b[l]-'A'+1];
			}
		}printf("%lld\n",s);s=0;
	}return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值