【练习】腾讯2017秋招笔试编程题——1.编码
假定一种编码的编码范围是a ~ y的25个字母,从1位到4位的编码,如果我们把该编码按字典序排序,形成一个数组如下: a, aa, aaa, aaaa, aaab, aaac, … …, b, ba, baa, baaa, baab, baac … …, yyyw, yyyx, yyyy 其中a的Index为0,aa的Index为1,aaa的Index为2,以此类推。 编写一个函数,输入是任意一个编码,输出这个编码对应的Index.
输入描述:
输入一个待编码的字符串,字符串长度小于等于100.
输出描述:
输出这个编码的index
输入例子1:
baca
输出例子1:
16331
题目链接:https://www.nowcoder.com/test/question/6fc8716ee33e4cc59d58d7e18712094e?pid=5582994&tid=21974697
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
int main()
{
int a1=1,a2=1*25,a3=1*25*25,a4=1*25*25*25;
int index=0;
char str[1005];
cin >> str;
int len=strlen(str);
if(len==1)
{
int x=str[0]-'a';
cout << x<<endl;
index=x*(a1+a2+a3+a4);
}
if(len==2)
{
int x=str[0]-'a';
index=x*(a1+a2+a3+a4);
x=str[1]-'a';
index=index+x*(a1+a2+a3)+1;
}
if(len==3)
{
int x=str[0]-'a';
index=x*(a1+a2+a3+a4);
x=str[1]-'a';
index=index+x*(a1+a2+a3)+1;
x=str[2]-'a';
index=index+x*(a1+a2)+1;
}
if(len==4)
{
int x=str[0]-'a';
index=x*(a1+a2+a3+a4);
x=str[1]-'a';
index=index+x*(a1+a2+a3)+1;
x=str[2]-'a';
index=index+x*(a1+a2)+1;
x=str[3]-'a';
index=index+x*(a1)+1;
}
cout << index << endl;
return 0;
}
运行正常AC,自我练习,非最优解。