java 2 bitmap_java相关:高级数据结构及应用之使用bitmap进行字符串去重的方法实例...

java相关:高级数据结构及应用之使用bitmap进行字符串去重的方法实例

发布于 2020-8-1|

复制链接

分享一篇关于关于高级数据结构及应用之使用bitmap进行字符串去重的方法实例,小妖觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小妖来看看吧

bitmap 即为由单个元素为 boolean(0/1, 0 表示未出现,1 表示已经出现过)的数组。如果C/C++ 没有原生的 boolean 类型,可以用 int 或 char 来作为 bitmap 使用,如果我们要判断某字符(char)是否出现过使用 int 作为 bitmap 的底层数据结构,bitmap 即为 int 数组,一个 int 长度为 32 个 bit 位, c / 32 ⇒ bitmap 中的第几个 int

c % 32 ⇒ bitmap 中的某 int 中的第几个 bit 位;

使用 char 作为 bitmap 的底层数据结构,bitmap 即为 char 数组,一个 char 长度为 8 个 bit 位;

c / 8 ⇒ bitmap 中的第几个 char

c % 8 ⇒ bitmap 中某 char 中的第几个 bit 位;

ASCII

A-Z:65-90

a-z:97-122

如果使用 char 作为 bitmap 的替代底层数据结构,为了实现字符串的去重需要 char 的长度为多少呢?122/8+1 ⇒ 16。如果使用 int 作为 bitmap 的底层实现,则需要 int 数组的长度为 122/32 + 1 ⇒ 41. int 作为底层数据结构

```java

void dedup(const char* src, char* dst)

{

unsigned int exists[4] = { 0 };

int i = 0, j = 0;

unsigned int mask;

char c;

while (src[i])

{

c = src[i];

mask = 1 2. 使用 char 作为底层数据结构

```java

void dedup(const char* src, char* dst)

{

unsigned char exists[16] = { 0 };

int i = 0, j = 0;

unsigned int mask;

char c;

while (src[i])

{

c = src[i];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值