解题思路
聪明的同学们稍加思索就知道这是一个有关映射的题目,每一个字母都对应着一个数字。
数组其实也可以来实现映射。数组的下标对应着数组里储存的值,我们可以将字母对应转化为数字,来作为数组的下标。
char型的变量实质上是储存了字符的ASCII值,所以可以将它强制转换为int型来作为数组的下标。
值得注意的是,因为a的ASCII值已经很大了,所以可以让每一个字母的ASCII值减去a的ASCII值,来使数组所需要的大小大大降低。从而节省空间。
#include<iostream>
using namespace std;
int ans[26]={1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4};
int main()
{
string a;
cin>>a;
int len=a.length();
for(int i=0;i<len;i++)
{
cout<<a[i]<<ans[a[i]-'a'];
}
cout<<endl;
}