学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!
附上汇总贴:小猴编程C++ | 汇总-CSDN博客
【题目描述】
一个字符串的价值定义为:该字符串所有字母价值之和,一个字母如果在字符串中是第一次出现,则该字母的价值为2,否则价值为1,并且字母不区分大小写。
例如:字符串S="ABaBC"的价值为8,从左到右:字母A在字符串S中第一次出现,所以其的价值是2;字母B在字符串S中第一次出现,所以其的价值是2;字母a在字符串S中之前已经出现过(不区分大小写),所以其的价值是1;字母B在字符串S中之前已经出现过,所以其的价值是1;字母C在字符串S中第一次出现,所以其的价值是2。因此字符串S的总价值为2+2+1+1+2=8。
给定一个只含大小写字母的字符串S,请你计算字符串S的价值。
【输入】
第一行一个整数T,表示共有T组测试数据。
每组数据一行,一个字符串S。
【输出】
每组数据输出一行,一个整数,表示字符串S的价值。
【输入样例】
2
CSPS
ACM
【输出样例】
7
6
【代码详解】
/*
1、统一大小写
2、f[]表示某个字母是否第一次出现:
f[i]=1 表示字母i之前已经出现过了
f[i]=0 表示字母i没有出现过
*/
#include <bits/stdc++.h>
using namespace std;
int T, f[130];
string s;
int main()
{
cin >> T;
while (T--) {
cin >> s;
for (int i=0; i<s.size(); i++) {
if ('a' <= s[i] && s[i] <= 'z') s[i] -= 32;
}
int ans = 0;
memset(f, 0, sizeof f);
for (int i=0; i<s.size(); i++) {
if (f[s[i]]==0) {
ans += 2;
f[s[i]] = 1;
} else {
ans += 1;
}
}
cout << ans << endl;
}
return 0;
}
【运行结果】
2
CSPS
7
ACM
6
标签:周赛,价值,int,字母,C++,大小写,字符串,小猴
From: https://blog.csdn.net/guolianggsta/article/details/139074961