solution.md 1.7 KB
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
# 字符串编码


**问题描述**

小明发明了一种给由全大写字母组成的字符串编码的方法。  

对于每一个大写字母,小明将它转换成它在 26 个英文字母中序号,即 A → 1, B → 2, … Z →26。

这样一个字符串就能被转化成一个数字序列:比如 ABCXYZ → 123242526。

现在给定一个转换后的数字序列,小明想还原出原本的字符串。

当然这样的还原有可能存在多个符合条件的字符串。

小明希望找出其中字典序最大的字符串。


**输入格式**

一个数字序列。


**输出格式**

一个只包含大写字母的字符串,代表答案


**样例输入**

```
123242526
```

**样例输出**

```
LCXYZ
```

**数据范围**

```
对于 20% 的评测用例,输入的长度不超过 20。
对于所有评测用例,输入的长度不超过 200000。
```

以下程序实现了这一功能,请你补全空白处内容:

```cpp
#include <bits/stdc++.h>
using namespace std;

int main()
{
    string in;
    string re = "";
    cin >> in;
    int len = in.length();

    in = in + 'Z';
    for (int i = 0; i < len;)
    {
        int temp = int(in[i] - '0') * 10 + int(in[i + 1] - '0');
        if (temp > 26)
        {
            re = re + char(in[i] - '0' + 'A' - 1);
            i++;
        }
        else
        {
            __________________
        }
    }
    cout << re;
    return 0;
}
```

## aop

### before

```cpp

```

### after

```cpp

```

## 答案

```cpp
re = re + char(temp + 'A' - 1);
i += 2;
```

## 选项

### A

```cpp
re = re + char(temp + 'A' - 1);
i += 1;
```

### B

```cpp
re = re + char(temp + 'A');
i += 1;
```

### C

```cpp
re = re + char(temp + 'A');
i += 2;
```