天天看点

Java算法总结 - 从易到难

一、获取数字中的每一位

int i = 58713;
个位 : i % 10;
十位 : i / 10 % 10;
百位 : i / 10 / 10 % 10;
千位 : i / 1000 % 10;
万位 : i / 10000 % 10;      

二、元素值使用随机数生成(范围为i~j)

Random r = new Random();
int num = r.nextInt(j - i + 1) + i;      

原理 : ​

​r.nextInt(num)​

​ 会生成0~num-1的随机数. 那么可以先生成i~j范围内的值,在依次往后移i个即可.

随机获取小写字母

Random r = new Random();
char c = (char) (r.nextInt('z' - 'a' + 1) + 'a');      

案例 : 随机获取5个大小写字母

public class  CharRandom{
    public static void main(String[] args) {
        String str = getStr();
        System.out.println(str);
    }

    private static String getStr() {
        char[] chs = new char[5];
        Random r = new Random();
        for (int i = 0; i < chs.length; i++) {
            chs[i] = (char)(r.nextInt('z' - 'a' + 1) + 'a');
        }

        int bound = r.nextInt(chs.length);
        for (int i = 0; i < bound; i++) {
            int j = r.nextInt(chs.length);
            chs[j] = (char) (r.nextInt('Z' - 'A' + 1) + 'A');
        }

        return new String(chs);
    }
}      

三、数列求和

Java算法总结 - 从易到难