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; }