《算法》第五章部分程序 part 7
▶ 书中第五章部分程序,包括在加上自己补充的代码,字符串的二进制表示、十六进制表示、图形表示
● 二进制表示
package package01; import edu.princeton.cs.algs4.StdOut;
import edu.princeton.cs.algs4.BinaryStdIn; public class class01
{
private class01() {} public static void main(String[] args)
{
int bitPerLine = 16; // 默认每行显示 16 Bit
if (args.length == 1)
bitPerLine = Integer.parseInt(args[0]);
int count; // 统计输入的字符数
for (count = 0; !BinaryStdIn.isEmpty(); count++)
{
if (bitPerLine == 0)
{
BinaryStdIn.readBoolean();
continue;
}
if (count % bitPerLine == 0) // 显示够 bitPerLine 个 bit,换行
StdOut.println();
StdOut.print(BinaryStdIn.readBoolean() ? 1 : 0);// 读取一个 bit,分别显示 1 和 0
}
if (bitPerLine != 0)
StdOut.println();
StdOut.println(count + " Bits"); // 总字符数
}
}
● 十六进制表示
package package01; import edu.princeton.cs.algs4.StdOut;
import edu.princeton.cs.algs4.BinaryStdIn; public class class01
{
private class01() {} public static void main(String[] args)
{
int bytePerLine = 16; // 默认每行显示 16 Byte
if (args.length == 1)
bytePerLine = Integer.parseInt(args[0]);
int count;
for (count = 0; !BinaryStdIn.isEmpty(); count++)
{
if (bytePerLine == 0)
{
BinaryStdIn.readChar();
continue;
}
if (count % bytePerLine == 0)
StdOut.println();
else
StdOut.print(" ");
StdOut.printf("%02x", BinaryStdIn.readChar() & 0xff);
}
if (bytePerLine != 0)
StdOut.println();
StdOut.println(count + " Bytes");
}
}
● 图形表示
package package01; import java.awt.Color;
import edu.princeton.cs.algs4.BinaryStdIn;
import edu.princeton.cs.algs4.Picture; public class class01
{
private class01() {} public static void main(String[] args)
{
int width = Integer.parseInt(args[0]), height = Integer.parseInt(args[1]); // 列数(Bit)和行数
Picture picture = new Picture(width, height); // 新建一张图
for (int row = 0; row < height; row++)
{
for (int col = 0; col < width; col++)
{
if (!BinaryStdIn.isEmpty()) // 按照输入流填充依次图形
picture.set(col, row, BinaryStdIn.readBoolean() ? Color.BLACK : Color.WHITE);
else
picture.set(col, row, Color.RED); // 红色补齐没有元素的部分
}
}
picture.show();
}
}
■ 用图形显示《白鲸记》前 18 万字符
《算法》第五章部分程序 part 7的更多相关文章
- 《算法》第五章部分程序 part 3
▶ 书中第五章部分程序,包括在加上自己补充的代码,字符串高位优先排序(美国国旗排序) ● 美国国旗排序 package package01; import edu.princeton.cs.algs4 ...
- 《算法》第五章部分程序 part 8
▶ 书中第五章部分程序,包括在加上自己补充的代码,适用于基因序列的 2-Bit 压缩算法,行程长压缩算法,Huffman 压缩算法,LZW 压缩算法 ● 适用于基因序列的 2-Bit 压缩算法 pac ...
- 《算法》第五章部分程序 part 6
▶ 书中第五章部分程序,包括在加上自己补充的代码,非确定性有穷自动机(NFA),grep 命令(利用 NFA 匹配) ● 非确定性有穷自动机(NFA) package package01; impor ...
- 《算法》第五章部分程序 part 5
▶ 书中第五章部分程序,包括在加上自己补充的代码,Knuth-Morris-Pratt 无回溯匹配,Boyer - Moore 无回溯匹配,Rabin - Karp 指纹匹配 ● Knuth-Morr ...
- 《算法》第五章部分程序 part 4
▶ 书中第五章部分程序,包括在加上自己补充的代码,Trie 树类,Trie 集合,三值搜索树(Ternary Search Trie) ● Trie 树类 package package01; imp ...
- 《算法》第五章部分程序 part 2
▶ 书中第五章部分程序,包括在加上自己补充的代码,字符串高位优先排序(计数 + 插排),(原地排序),(三路快排,与前面的三路归并排序相同) ● 计数 + 插排 package package01; ...
- 《算法》第五章部分程序 part 1
▶ 书中第五章部分程序,包括在加上自己补充的代码,字母表类,字符串低位优先排序(桶排) ● 字母表类 package package01; import edu.princeton.cs.algs4. ...
- Gradle 1.12用户指南翻译——第四十五章. 应用程序插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- 《算法》第一章部分程序 part 1
▶ 书中第一章部分程序,加上自己补充的代码,包括若干种二分搜索,寻找图上连通分量数的两种算法 ● 代码,二分搜索 package package01; import java.util.Arrays; ...
随机推荐
- 在同一台电脑安装python 2 和3,并且怎样安装各自的pip和模块
安装python2.7 和 3.6不冲突直接安装就行 安装pip 访问https://pip.pypa.io/en/stable/installing/获取地址 curl https://bootst ...
- 【巷子】---redux---【react】
一.flux的缺陷 因为dispatcher和Store可以有多个互相管理起来特别麻烦 二.什么是redux 其实redux就是Flux的一种进阶实现.它是一个应用数据流框架,主要作用应用状态的管理 ...
- 黄聪:初识Pjax:pjax是什么
听说博主不再折腾wordpress了,陌小雨还是转载到网站做个备份吧,万一哪天没有了呢.陌小雨觉得讲的挺清楚的,小白都能懂. pjax是 pushstate + ajax,分别百度可以得到相关资料,在 ...
- 转自高手关于SQL 锁的叙述。。(nolock,rowlock,tablock,xlock,paglock)
锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: [丢失更新]A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 ...
- Java序列化的理解与学习
1.什么是Java序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比 JVM的生命周期更长.但在现实应 ...
- 【Mysql】mysql使用触发器创建hash索引
概述 若设计的数据表中,包含较长的字段,比如URL(通常都会比较长),查询时需要根据该字段进行过滤: select * from table_xxx where url = 'xxxxxxx'; 为了 ...
- Ubuntu 14.10 下安装伪分布式hdoop 2.5.0
折腾了一天,其间配置SSH时候出现了问题,误删了ssh-keygen相关文件,导致配置SSH彻底萎了,又重装了系统.... 采用伪分布式模式,即hadoop将所有进程运行于同一台主机上,但此时Hado ...
- bzoj4812: [Ynoi2017]由乃打扑克
由于查询的是树链的并的信息,同时信息不能高效合并,只能考虑用bitset维护,小范围暴力预处理以便从bitset算出答案 对树分块,保证每块是连通的且直径较小,对分出的块缩点建新树,在新树上建树上ST ...
- springboot(五)读写分离,多个读库,Druid监控--待整理
1.修改mybatis.properties # 主数据源,默认的 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.d ...
- [UE4]宏
宏和函数的区别 “展开”就是直接将宏代码直接复制粘贴替换到所有使用当前宏的地方.这个跟C++中的宏是一样的. 1.宏可以有多个入口,多个出口,函数只有一个入口,一个出口 2.宏的参数可以使用“Exec ...