用js生成一个长度为1000万的字符串

发布于 2022-09-01 13:11:00 字数 247 浏览 6 评论 0

看书,讲到了位图。
是用位图的方式给电话号码排序,号码长度是7位,因此需要一个1000万长度的由0组成的字符串。
尝试了以下方法生成初始化的位图字符串,都卡死了。

for(var i="";i.length<10000000;i+=0){}
new Array(10000001).join("0")

请问有比较好的算法能办这件事吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

惜醉颜 2022-09-08 13:11:00

https://jsfiddle.net/ghcqhfad/1/
可以运行的。只是浏览器需要一些时间。

var text = "";
var possible = "0123456789";

for( var i=0; i < 10000000; i++ )
    text += possible.charAt(Math.floor(Math.random() * possible.length));

console.log(text);
白昼 2022-09-08 13:11:00
export class Bitmap {
    private bin: Uint8Array;

    constructor(size: number) {
        this.bin = new Uint8Array(new ArrayBuffer((size >> 3) + 1));
    }

    public get(index: number): boolean {
        const row = index >> 3;
        const bit = 1 << (index % 8);
        return (this.bin[row] & bit) > 0;
    }

    public set(index: number, bool: boolean = true) {
        const row = index >> 3;
        const bit = 1 << (index % 8);
        if (bool) {
            this.bin[row] |= bit;
        } else {
            this.bin[row] &= (255 ^ bit);
        }
    };

    public fill(num: number = 0) {
        this.bin.fill(num);
    }

    public flip(index: number) {
        const row = Math.floor(index / 8);
        const bit = 1 << (index % 8);
        this.bin[row] ^= bit;
    }
}
赢得她心 2022-09-08 13:11:00

js的字符串可是utf-16的编码哦 这离“位”差的有点远
还是用纯c来做吧

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文