把数字翻译成字符串
题目
给定一个数字,按照如下规则翻译成字符串:0翻译成“a”,1翻译成“b”...25翻译成“z”。一个数字有多种翻译可能,例如12258一共有5种,分别是bccfi,bwfi,bczi,mcfi,mzi。实现一个函数,用来计算一个数字有多少种不同的翻译方法。
class Solution { public: int translateNum(int num) { if (num < 0) { return 0; } string num_of_str = to_string(num); int len = num_of_str.length(); //表示num[0...i] 以i结尾的能够翻译的字符种类数 vector<int> dp(len, 0); dp[0] = 1;//1个字符肯定能够翻译 for (int i = 1; i < len; ++i) { dp[i] = dp[i - 1];//当前位置字符直接翻译 int num1 = num_of_str[i - 1] - '0'; int num2 = num_of_str[i] - '0'; if (num1 * 10 + num2 >= 10 && num1 * 10 + num2 <= 25) { if (i - 2 < 0) { dp[i] += 1; } else { dp[i] += dp[i - 2]; } } } return dp[len - 1]; } };