对于字母映射表存储的编码复杂度对比。。

#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应该会快一些。。毕竟是红黑树和块状链表。。但是这个毕竟是数据量有点大的情况

数据量小的话我们尽量采用最后一种存储方式

时间: 2024-12-15 07:22:36

对于字母映射表存储的编码复杂度对比。。的相关文章

SQLserver使用映射表进行数据相关操作

基本需求: 老数据有老数据的顺序编码规则,新数据有新数据的顺序编码规则,但是老数据的编码还是要更新相应的东西,新数据也得实时更新,在新数据中已经用新编码规则对老数据对进行编码,在上报表中既要新增新数据,也要更新老数据与现有数据.------------------------------------------------- --Author:Oliver QIN --Date:2015-11-07 --DESC:使用映射表对老数据进行更新 ---------------------------

海量路由表可以使用HASH表存储吗-HASH查找和TRIE树查找

千万别!很多人这样说,也包括我.Linux内核早就把HASH路由表去掉了,现在就只剩下TRIE了,不过我还是希望就这两种数据结构展开一些形而上的讨论. 1.hash和trie/radix hash 和tire其实是可以统一在一起的.具有相同hash值的多个项具有一个共同的特征,这个特征怎么提取呢?无疑这就是hash函数的工作.而trie树 (或者radix树,管它呢)的一棵子树也有共同的特征,这个特征怎么提取呢?无疑这就是该子树根节点的父节点指示的某些bits在这棵子树的每一个节点 都具有相同的

浅谈android中手机联系人字母索引表的实现

实际上字母索引表的效果,可以说在现在的众多APP中使用的非常流行,比如支付宝,微信中的联系人,还有购物,买票的APP中选择全国城市,切换城市的时候,这时候的城市也就是按照一个字母索引的顺序来显示,看起来是很方便的.其实这种字母索引表的效果最开始是出现在微信的联系人中.因为觉得这种效果功能在今后的项目中可以说是非常常见,可能会用的上,所以准备来波博客讲述一下实现的原理,一来方便以后自己复习,二来如果能够帮助一些android路上奋斗小伙伴也是蛮有意义的. 下面我们先来看下效果图, 看完效果图后我们

[转]Azure 表存储和 Windows Azure SQL Database - 比较与对照

本文转自:https://msdn.microsoft.com/library/azure/jj553018 更新时间: 2014年10月 作者:Valery Mizonov 和 Seth Manheim 审阅者:Brad Calder.Jai Haridas.Paolo Salvatori.Silvano Coriani.Prem Mehra.Rick Negrin.Stuart Ozer.Michael Thomassy.Ewan Fairweather 本主题比较  支持的两种结构化存储类

查看和改动MySQL数据库表存储引擎

要做一名合格的程序猿,除了把代码写的美丽外,熟知数据库方面的知识也是不可或缺的.以下总结一下怎样查看和改动MySQL数据库表存储引擎:        1.查看数据库所能支持的存储引擎:show engines;        2.查看某个数据库中某个表所使用的存储引擎:show table status from db_name where name='table_name';(注:将where条件去掉后能够查看某个数据库中全部表的存储引擎情况)        3.改动表引擎方法:alter t

稀疏矩阵的三元组顺序表存储及矩阵相乘算法小结

稀疏矩阵的三元组顺序表存储及矩阵相乘算法小结 巧若拙(欢迎转载,但请注明出处:http://blog.csdn.net/qiaoruozhuo) 一:稀疏矩阵的三元组顺序表数据结构 typedef int ElemType; typedef struct { intx, y;  //该非零元素的行下标和列下标 ElemTypee; //该非零元素的值 } Triple; typedef struct { Tripledata[MAXSIZE]; //非零元素三元组顺序表 intmu, nu, t

数据结构之---C语言实现图的邻接表存储表示

// 图的数组(邻接矩阵)存储表示 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_NAME 3 // 顶点字符串的最大长度+1 #define MAX_VERTEX_NUM 20 typedef int InfoType; // 存放网的权值 typedef char VertexType[MAX_NAME]; // 字符串类型 typedef enum{DG, DN, AG

数据结构(11) -- 邻接表存储图的DFS和BFS

/////////////////////////////////////////////////////////////// //图的邻接表表示法以及DFS和BFS /////////////////////////////////////////////////////////////// #include <iostream> #include <stdlib.h> #include <queue> using namespace std; //图的邻接表表示法

MFC 消息映射表和虚函数实现消息映射到底谁的效率高

深入浅出MFC对于虚函数实现方式的缺点,它指出:虚函数耗费大量内存,系统最终将被这些额外负担拖垮.    但是现在对于容量巨大的白菜价格的内存来说,这种额外负担是否已经过时了呢~?    书中提到,虚函数表中的每一个项目都是一个函数指针,价值4字节,如果基类的虚函数表有100项 (MFC里面的消息数量是否在这个数量级?),经过十层继承,开支散叶,总共需要耗费多少内存?    我粗略地算了下,不知道这种计算方法是否正确,4Byte*100项=400Byte.如果CCmdTarget中定义100个消