`
MouseLearnJava
  • 浏览: 467219 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
for (long l = 4946144450195624L; l > 0; l >>= 5) System.out.print((char) (((l & 31 | 64) % 95) + 32)); 这段代码有点诡异,输出的结果是hello world。 4946144450195624是64位长整形,它的二进制表达方式为 10001100100100111110111111110111101100011000010101000 程序用每5个位为一组去解析字符,在for循环中使用l >>5。 00100|01100|10010|011 ...
开通个人小站 http://www.wangmengjun.com/ 分享 和 积累同在
几个恰逢其时的动物的照片,完美! 这鲨鱼是想和潜水员击掌吗? 小“色猴”,你看哪呢? 动物会祈祷吗? 看到下面的水獭,我想它们也会的。 这猫是要做广告代言吗? 奇怪的眼睛组合 更多文章 http://www.wangmengjun.com/showLifeDetail.do?lifeId=17
使用KindEditor将Java代码存入数据库,然后将数据库的数据取出来并显示在页面上的时候,发现Java代码没有高亮显示。 加入的有关KindEditor相关的CSS 和 JS有: prettify.css kindeditor.js prettify.js <link rel="stylesheet" href="${pageContext.request.contextPath}/plugins/code/prettify.css" /> <script type="text/javascript&quo ...
本文用代码实现最短时间过桥,并且打印如下两个例子的最小过桥时间: 例子一:四人夜间过桥,他们只有一个手电筒一次只能两个人过桥,过桥时必须有手电筒,四人过桥时间为1分2分6分10分 例子二:小明过桥要一秒,小明的弟弟要三秒,小明的爸爸要六秒,小明的妈妈要八秒,小明的爷爷要十二秒。每次此桥最多可过两人,而过桥的速度,依过桥最慢者而定,可是灯在点燃后, 三十秒就会熄灭(过桥需要灯照明)。那么,请问小明一家,如何在三十秒内过桥? 代码: import java.util.ArrayList; import java.util.Collections; import java.util.L ...
本文使用位掩码实现一个功能 ==》将数组分割成差值最小的子集 代码如下: import java.util.Arrays; public class MinimalDifference { /** * 将数组分割成差值最小的子集 */ public void printTwoMinDiffGroups(int[] values) { int length = values.length; // 长度为length的二进制表示个数有1<<length个 int allMasks = 1 << length; int ...
采用位掩码实现打印给定数组所有的非空子集。 分析: 首先来看一个例子,如果给定一个正整数N,如何输出由1到N组成的数组所有的非空子集呢? 如N=3, 那么1到3组成的数组为{1,2,3},数组长度为3,那么二进制表示有1<<3 = ...
题目:给定一个长度为N的数组,里面的每一个元素的值都在0到N-1之间,并且数组的元素是各不相同的。重新排列这个数组,使得array[i]的值变成array[array[i]], 但是只能使用0(1)的额外空间。 实现的代码如下: import java.util.Arrays; /** * <pre> * 题目要求:重新排列一个数组,使得array[i]的值变成array[array[i]], * 只能使用0(1)的额外空间。 * * 題目描述:给定一个长度为N的数组,里面的每一个元素的值都在0到N ...
要求:计算非负数二进制形式中1的个数. 本文采用两种方法来实现: 1) 通过Integer#toBinaryString方法获得二进制表达式, 替换掉0,那么剩余的都是1, 然后直接计算剩余字符串的长度来得到1的个数. 2) 采用位运算. 把一个整数减1,然后再与原来整数做与运算(&),会把该整数最右边一个1变成0,那么一个整数的二进制表示中有多少个1就可以进行多少次这样的操作. 具体的代码如下: public class Example { /** * 通过Integer#toBinaryString方法获得二进制表达式, 替换掉0,剩余的都是1, 然后直接计算 ...
在Java中, break除了能够在switch中使用之外,还可以用于跳出循环。 比如, 例子一 public class BreakTest { public static void main(String[] args) { for (int i = 1; i <5; i++) { for (int j = 1; j < 5; j++) { if (i * j > 3) { break; ...
本文将给出一个使用回溯法实现全排列的程序。 public class Permutations { public void permute(String value, int startIndex, int endIndex) { if (startIndex == endIndex) { System.out.printf("%s\n", value); } else { for (int currIndex = startIndex; currIndex <= endIndex; currIndex++) { ...
本文实现一个Java小程序: 将所有数值为0的元素置于数组最后。 例如: 移动前: [1, 3, 0, 3, 1, 4, 5, 0, 3, 1, 0, 2, 3, 1, 9, 8, 2, 2, 5, 2] 移动后: [1, 3, 3, 1, 4, 5, 3, 1, 2, 3, 1, 9, 8, 2, 2, 5, 2, 0, 0, 0] 如果数组中没有需要移动的数,那么就保持不变。 思路: 1. 定义一个与给定数组长度等长的整形数组,同时定义一个名为nonZerosCount的整形变量,用于统计不为0的元素个数。 2. 循环遍历给定的整形数组,如果该元素不为0,则将该位置的元素数值放置 ...
本文将整理java.util.Arrays工具类比较常用的方法: 本文介绍的方法基于JDK 1.7 之上。 1.  asList方法  @SafeVarargs public static <T> List<T> asList(T... a) { return new ArrayList<>(a); }    使用该方法可以返回一个固定大小的List,如: List<String> stringList = Arrays.asList("Welcome", &quo ...
本文将记录实现“从一个整数数组中找出总和为S的所有子集”功能的两种方法。 1. 使用Stack来实现 2. 不借助Stack来实现。 使用Stack来实现 import java.util.Stack; public class GetAllSubsetByStack { /** Set a value for target sum */ public static final int TARGET_SUM = 15; private Stack<Integer> stack = new Stack<Integer>(); /** ...
数字三角形问题:一个数字三角宝塔。设数字三角形中的数字为不超过100的正整数。现规定从最顶层走到最底层,每一步可沿左斜线向下或右斜线向下走。假设三角形行数小于等于100.编程求解从最顶层走到最底层的一条路径,使得沿着该路径所经过的数字的总和最大,输出最大值。 例如一个行数为5的三角形如下:                7              3   8            8   1   0          2   7   7   4        5   5   2   6   5 这一个问题,很容易想到用枚举的方法去解决,即列举出所有路径并记录每一条路径所经过的数字总和。然 ...
Global site tag (gtag.js) - Google Analytics