首页 > 代码库 > 对于字母映射表存储的编码复杂度对比。。
对于字母映射表存储的编码复杂度对比。。
#include <iostream> #include <cstdio> #include <cstdlib> #include <vector> #include <map> using namespace std; struct node{ char a,b; node(char _a,char _b){ this->a=_a; this->b=_b; } }; vector<node> data; map<char,char> m; void VEC(){ data.push_back(node(‘A‘,‘A‘)); data.push_back(node(‘E‘,‘3‘)); data.push_back(node(‘H‘,‘H‘)); data.push_back(node(‘I‘,‘I‘)); data.push_back(node(‘J‘,‘L‘)); data.push_back(node(‘L‘,‘J‘)); data.push_back(node(‘M‘,‘M‘)); data.push_back(node(‘O‘,‘O‘)); data.push_back(node(‘S‘,‘2‘)); data.push_back(node(‘T‘,‘T‘)); data.push_back(node(‘U‘,‘U‘)); data.push_back(node(‘V‘,‘V‘)); data.push_back(node(‘W‘,‘W‘)); data.push_back(node(‘X‘,‘X‘)); data.push_back(node(‘Y‘,‘Y‘)); data.push_back(node(‘Z‘,‘5‘)); data.push_back(node(‘1‘,‘1‘)); data.push_back(node(‘2‘,‘S‘)); data.push_back(node(‘3‘,‘E‘)); data.push_back(node(‘5‘,‘Z‘)); data.push_back(node(‘8‘,‘8‘)); } void MAP(){ m[‘A‘]=‘A‘; m[‘E‘]=‘3‘; m[‘H‘]=‘H‘; m[‘I‘]=‘I‘; m[‘J‘]=‘L‘; m[‘L‘]=‘J‘; m[‘M‘]=‘M‘; m[‘O‘]=‘O‘; m[‘S‘]=‘2‘; m[‘T‘]=‘T‘; m[‘U‘]=‘U‘; m[‘V‘]=‘V‘; m[‘W‘]=‘W‘; m[‘X‘]=‘X‘; m[‘Z‘]=‘5‘; m[‘1‘]=‘1‘; m[‘2‘]=‘S‘; m[‘3‘]=‘E‘; m[‘5‘]=‘Z‘; m[‘8‘]=‘8‘; } char A[]={‘A‘,‘b‘,‘c‘,‘d‘,‘3‘,‘f‘,‘g‘,‘H‘,‘I‘,‘L‘,‘k‘,‘J‘,‘M‘, ‘n‘,‘O‘,‘p‘,‘q‘,‘r‘,‘2‘,‘T‘,‘U‘,‘V‘,‘W‘,‘X‘,‘Y‘,‘5‘}; char B[]={‘1‘,‘S‘,‘E‘,‘0‘,‘Z‘,‘0‘,‘0‘,‘8‘,‘0‘}; bool isBig(char x){ if(x>=‘A‘&&x<=‘Z‘) return true; return false; } bool isSmall(char x){ if(x>=‘a‘&&x<=‘z‘) return true; return false; } bool isDigit(char x){ if(x>=‘1‘&&x<=‘9‘) return true; return false; } char c; const int maxn=100; char s[maxn]; int main(){ return 0; }
应该可以看出来最后一个编码量最小。。但是对于中间不存在映射关系的元素我们可以用其他标志来特判没有。。
不要自己硬数。。。费眼费力啊。。这个题好像小写字母和0是非法的。。所以我们可以用来特判
但是最后一个存法会慢一些?线性的嘛。。
map和vector应该会快一些。。毕竟是红黑树和块状链表。。但是这个毕竟是数据量有点大的情况
数据量小的话我们尽量采用最后一种存储方式
对于字母映射表存储的编码复杂度对比。。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。