3862767 6 13530293 3
399
3862767 1 13530293 8
0
这个思路也挺直观的,找出字符串中给定重复字符的个数,而后构造数字,相加便可。由于要找到字符串中重复的字符,因此使用string进行存储,在遍历字符串进行比较的时候,输入的字符与遍历的元素比较,使用==老是比较遍历元素的ASCII码值,由于遍历元素是数字字符吗?,经过调试,我就将输入的字符先转化为ASCII码,进行比较就好了。而后构造数字P_A 和 P_B ,也是使用字符转拼接的,而后将字符串转为long long 类型进行计算。恰好C++库中提供的有将字符串转化为long long 类型的函数,stoll()。可是要注意若是字符串为“”空字符串,则在进行long long转化的时候回抛出异常,因此当字符串长度为0时,将其赋值为“0”便可。ios
#include <iostream> #include <string> using namespace std; int main() { string s1, s2; char A, B; long long repeatA = 0; long long repeatB = 0; cin >> s1 >> A >> s2 >> B; int m = toascii(A); int n = toascii(B); // 找到s1,s2各自重复的字符个数 for (int i = 0; i < s1.length(); i++) { if (m == s1[i]) { repeatA++; } } for (int i = 0; i < s2.length(); i++) { if (n == s2[i]) { repeatB++; } } // 构造这个数字字符串 string resultA, resultB; for (int i = 0; i < (int)repeatA; i++) { resultA += A; } for (int i = 0; i < (int)repeatB; i++) { resultB += B; } if (resultA.length() == 0) { resultA = "0"; } if (resultB.length() == 0) { resultB = "0"; } // 字符串转long long string::size_type sz = 0; cout << stoll(resultA, &sz, 0) + stoll(resultB, &sz, 0) << endl; return 0; }