目 录CONTENT

文章目录

4393.字符串价值

不争
2024-01-02 / 0 评论 / 0 点赞 / 22 阅读 / 1687 字

4393.字符串价值

每个字符 1 的价值为 a1a1,每个字符 2 的价值为 a2a2,每个字符 3 的价值为 a3a3,每个字符 4 的价值为 a4a4。

一个字符串的价值等于其所包含的所有字符的价值之和。

给定一个由字符 1234 构成的字符串 SS,请你计算它的价值。

输入格式

第一行包含四个整数 a1,a2,a3,a4a1,a2,a3,a4。

第二行包含一个字符串 SS。

输出格式

一个整数,表示字符串 SS 的价值。

数据范围

前三个测试点满足 0≤a1,a2,a3,a4≤50≤a1,a2,a3,a4≤5,1≤|S|≤101≤|S|≤10。
所有测试点满足 0≤a1,a2,a3,a4≤1040≤a1,a2,a3,a4≤104,1≤|S|≤1051≤|S|≤105。

输入样例1:

1 2 3 4
123214

输出样例1:

13

输入样例2:

1 5 3 2
11221

输出样例2:

13

题解1:

#include<iostream>
#include<string>
using namespace std;
int main(){

    int b[4];
    for (int i = 1 ; i <= 4 ; i ++ ) scanf("%d", &b[i]);

    int a[4];
    string s;
    cin >> s;
    //计算出1~4出现的次数
    for (int i = 0 ; i < s.size() ; i ++){
        a[s[i]-'0']++;
    }
    int sum = 0;
    //在求和
    for (int i = 1 ; i <= 4 ; i ++){
        sum += a[i]*b[i];
    }
    cout << sum;

    return 0;
}

题解2:

#include<iostream>
#include<string>
using namespace std;
int main(){

    int b[4];
    for (int i = 1 ; i <= 4 ; i ++ ) scanf("%d", &b[i]);

    int sum = 0;
    string s;
    cin >> s;
    //直接把字符串取出来当索引进行匹配相加
    for (int i = 0 ; i < s.size() ; i ++){
        sum += b[s[i]-'0'];
    }

    cout << sum;

    return 0;
}
0

评论区