LCR 165. 解密数字

考点

  • 划分DP
  • 滚动数组

思路

划分DP的裸题,不再赘述

注意,由于只有两位数字,所以可以用两个变量滚掉数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public:
int crackNumber(int ciphertext) {
string s = to_string(ciphertext);
int n = s.size();
s = "0" + s;
int a = 1, b = 1;
for (int i = 2; i <= n; ++i) {
int res = a;
int x = (s[i] - '0'), y = (s[i - 1] - '0') * 10, z = x + y;
if (z != x && z >= 0 && z <= 25)
res += b;
b = a, a = res;
}
return a;
}
};