今天在看面试题的时候,看到了这样的题。做一遍后记录下来方便再次查阅。如果有更好的答案欢迎大家来解答。码上
package com.macro.mall.demo.test.work;
import java.util.Arrays;
/**
* @author zxw
* @version 1.0
* @description 随机字符串数组求重复数据
* @data: 2020/2/20 14:50
*/
public class StringTest {
public static void main(String[] args) {
getRepetition(100);
}
/**
* 获得随机字符串数组的重复数据;
* @param length 重复字符串数组的长度
*/
private static void getRepetition(int length) {
String[] strArr = new String[length];
for (int i = 0; i < strArr.length; i++) {
strArr[i] = getRandomStr(2);
}
//输出随机字符串数组
System.out.println(Arrays.toString(strArr));
//使用选择排序,让每一个数组元素进行比较
for (int i = 0; i < strArr.length - 1; i++) {
for (int j = i + 1; j < strArr.length; j++) {
if (strArr[i].equals(strArr[j])) {
System.out.print(strArr[i]);
}
}
}
}
/**
* 获得随机字符串
*
* @param length 随机字符串的长度
* @return
*/
private static String getRandomStr(int length) {
StringBuilder sb = new StringBuilder();
String result = "";
for (int i = '0'; i < '9'; i++) {
sb.append((char) i);
}
for (int i = 'a'; i < 'z'; i++) {
sb.append((char) i);
}
for (int i = 'A'; i < 'Z'; i++) {
sb.append((char) i);
}
for (int i = 0; i < length; i++) {
int index = (int) (Math.random() * sb.length());
result += sb.charAt(index);
}
return result;
}
}