标签归档:Java

RSS feed of Java

Java滚动数组计算编辑距离

编辑距离(Edit Distance),也称Levenshtein距离,是指由一个字符串转换为另一个字符串所需的最少编辑次数。

下面的代码摘自org.apache.commons.lang.StringUtils

用法示例:

StringUtils.getLevenshteinDistance(null, *)             = IllegalArgumentException
StringUtils.getLevenshteinDistance(*, null)             = IllegalArgumentException
StringUtils.getLevenshteinDistance("","")               = 0
StringUtils.getLevenshteinDistance("","a")              = 1
StringUtils.getLevenshteinDistance("aaapppp", "")       = 7
StringUtils.getLevenshteinDistance("frog", "fog")       = 1 ...

继续阅读

一道关于Java变量初始化的面试题

首先来看笔者遇到的一道面试题,阅读下面的代码并给出执行结果:

class Singleton {
    private static Singleton singleton = new Singleton();
    public static int counter1;
    public static int counter2 = 0;

    private Singleton() {
        counter1++;
        counter2++;
    }

    public static Singleton getInstance() {
        return singleton;
    }
}

public class TestSingleton {
    public static void main(String[] args) {
        Singleton s ...

继续阅读

Java实现数组洗牌算法

数组洗牌是指将一个数组中的元素顺序打乱,随机重新排列。

算法实现思路如下:

按照下标从大到小的顺序遍历数组,记下标为i

遍历时生成范围[0, i]的随机数j,交换下标i与下标j的数组元素

参考:java.util.Collections类中的shuffle方法

Java代码:

public static void shuffle(int[] nums) {
    Random rnd = new Random();
    for (int i = nums.length - 1; i > 0; i--) {
        int j ...

继续阅读

Java OOP与Python OOP的区别

For a Java guy Python is an anarchic playgound where anyone can grab a club and start mauling your head.

对于Java的忠实粉丝来说,Python就像是一个无政府主义的游乐场,任何人都可以随手拿起一根棍子敲你的头。

For a Python guy Java is a an Orwellian universe where you are constantly shackled to someone ...

继续阅读