面试相关练习

package com.springboot.demo;

import org.junit.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class SimpleTest {

private static final List<String> STR_LIST = new ArrayList<String>() {{
    this.add("0");
    this.add("1");
    this.add("2");
    this.add("3");
    this.add("4");
    this.add("5");
    this.add("6");
    this.add("7");
    this.add("8");
    this.add("9");
}};

private static final Random RANDOM_INDEX = new Random();


/**
 * 从0~9 随意组成8位不重复的字符串,生成4个不同的字符串
 */
@Test
public void simpleTest() {
    // 定义4个不同的字符串List
    List<String> fourNoRepeatList = new ArrayList<>();
    // 组成4个不同的字符串
    addFourStrToList(fourNoRepeatList);
    // 打印
    printlnList(fourNoRepeatList);

}

/**
 *  打印
 * @param fourNoRepeatList
 */
private void printlnList(List<String> fourNoRepeatList) {
    fourNoRepeatList.stream().forEach(str -> System.out.println(str));
}

/**
 *  组成4个不同的字符串
 * @param fourNoRepeatList
 */
private void addFourStrToList(List<String> fourNoRepeatList) {
    // 获取第一个不重复的字符串
    String randomEightNoRepeatStr = getRandomEightNoRepeatStr(STR_LIST);
    fourNoRepeatList.add(randomEightNoRepeatStr);
    // 循环剩下三个不重复的字符串
    while (isFourListSize(fourNoRepeatList)) {
        // 随意组成8位不重复的字符串
        randomEightNoRepeatStr = getRandomEightNoRepeatStr(STR_LIST);
        if (!fourNoRepeatList.contains(randomEightNoRepeatStr)) {
            fourNoRepeatList.add(randomEightNoRepeatStr);
        }
    }

}

/**
 *  是否存在四个不同的字符串
 * @param fourNoRepeatList
 * @return
 */
private static boolean isFourListSize(List<String> fourNoRepeatList) {
    return fourNoRepeatList.size() < 4;
}

/**
 *  随机获取8位不同数字的字符串
 * @param lists
 * @return
 */
private String getRandomEightNoRepeatStr(List<String> lists) {
    List<String> copyList = new ArrayList<>(lists);
    StringBuffer stringBuffer = new StringBuffer();

    for (int i = 8; i > 0; i--) {
        int indexArr = RANDOM_INDEX.nextInt(i + 2);
        String randomStr = copyList.get(indexArr);
        copyList.remove(randomStr);
        stringBuffer.append(randomStr);
    }
    return stringBuffer.toString();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值