华为面试题-字典序
来源:互联网 发布:ccer数据库 豆掰 编辑:程序博客网 时间:2024/06/10 19:04
【背景知识】听实验室师兄说的一道华为的面试题目。(具体真实来源不究,若题目来源有侵权请告知,思路属个人陋见,仅供学习)
【问题描述】输入一个长度不大于4的字符串(只包含a~y共25个字符),求该字符串对应于字典序的序号,序号从0开始。(可能表述有些不太清楚)
【输入样例】a,aa,aaa,aaaa,aaab,aaay,aab,ab,
【输出样例】0,1,2,3,4,27,28,652.
【代码】
#include<iostream>#include<cstdlib>#include<stdio.h>#include<memory.h>#include<string>#include<cmath>#define f1(x) ((25*25*25+25*25+25+1)*(x-'a')+0)#define f2(x) ((25*25+25+1)*(x-'a')+1)#define f3(x) ((25+1)*(x-'a')+1)#define f4(x) ((1)*(x-'a')+1)using namespace std;int f(int i,char ch){ switch(i){ case 1: return f1(ch); case 2: return f2(ch); case 3: return f3(ch); case 4: return f4(ch); }}int main(){ char inString[5]; while(cin>>inString){ int len = strlen(inString); int num = 0; for(int i = 0; i < len; ++i) num += f(i+1,inString[i]); cout<<num<<endl; } return 0;}
一年多没有写C++的代码了,代码写的很渣,见谅。
【公式总结】
第一位:(25^3+25^2+25^1+25^0)('x' - 'a')+0
第二位:(25^2+25^1+25^0)('x' - 'a')+1
第三位:(25^1+25^0)('x' - 'a')+1
第四位:(25^0)('x' - 'a')+1
将四位求和可得字符串的序列数。
总公式为:
注:n为字符位数(前面说的第一位在这是第3位,第二位是第2位,第三位是第1位,第四位是第0位,有点乱。。)
'x'为第n位的输入字符的ASCII值,‘a’为字符a的ASCII值
mean(‘a'’)意味该位的a字符是从0开始计数还是从1开始计数(除第3位为0外,均为1) ps:如果题目从1开始计算序列的话,每一位就都取1了。
所有字符串对应的序列号
如有转载,请私信博主并注明出处。
阅读全文
0 0
- 华为面试题-字典序
- 华为java华为面试题
- 华为面试题
- 华为面试题(转载)
- 华为一道面试题
- JAVA华为面试题
- 华为面试题
- 华为面试题1
- 华为网络工程师面试题
- 华为面试题
- 华为面试题
- 华为面试题
- 华为面试题
- 华为面试题
- 华为面试题
- 一道华为面试题
- 华为面试题
- java华为面试题
- 中国国家创新指数升至世界第17位
- NYOJ 27 水池数目
- 线上服务CPU100%问题快速定位实战
- 使用jquery中的$.Ajax 和$.post 发送请求 (基础写法)
- 进程间通信方式
- 华为面试题-字典序
- mysql主从设计
- 浅谈text段、data段和bss段
- mysql
- Intra Mode Coding With 4-tap Interpolation Filter
- "NetworkError: 400 Bad Request
- 排序算法
- 创建用户
- Java 全角、半角字符转化