字符串排序(算法初阶、快速排序)、只出现一次的数字 II(位运算、数组)、生成随机字符串(图算法、算法高阶)
【摘要】 字符串排序(算法初阶、快速排序)用main方法排序(按首字母或按字符串长度) 要求:①输出原数组和排序后的数组②若有“,”“.”不能进行排序,并将不符合排序要求的数组打印出来③不能用API,可用选择、冒泡、快速解答:import java.util.Scanner;class Untitled { public static void main(String[] args) { ...
字符串排序(算法初阶、快速排序)
用main方法排序(按首字母或按字符串长度) 要求:
①输出原数组和排序后的数组
②若有“,”“.”不能进行排序,并将不符合排序要求的数组打印出来
③不能用API,可用选择、冒泡、快速
解答:
import java.util.Scanner;
class Untitled {
public static void main(String[] args) {
int num;
System.out.println("请输入数组元素长度:");
Scanner in = new Scanner(System.in);
num = in.nextInt();
System.out.println("请输入字符串:");
String str[] = new String[num];
for (int count = 0; count < num; count++) {
str[count] = in.next();
}
in.close();
System.out.println("before sorting:");
int c = 0;
for (int i = 0; i < num; i++) {
if (str[i].contains(",") || str[i].contains("."))
c++;
System.out.println(str[i]);
}
for (int i = 0; i < num - 1; i++) {
int min = i;
for (int j = i + 1; j < num; j++) {
if (str[min].contains(",") || str[min].contains("."))
min = j;
else if (str[j].compareTo(str[min]) < 0 && !str[j].contains(",") && !str[j].contains("."))
min = j;
}
if (min != i) {
String t = str[i];
str[i] = str[min];
str[min] = t;
}
}
System.out.println("after sorting:");
for (int i = 0; i < num - c; i++)
System.out.println(str[i]);
System.out.println("invalid items:");
for (int i = num - c; i < num; i++)
System.out.println(str[i]);
}
}
只出现一次的数字 II(位运算、数组)
给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 **三次 。**请你找出并返回那个只出现了一次的元素。
示例 1:
输入:nums = [2,2,3,2] 输出:3
示例 2:
输入:nums = [0,1,0,1,0,1,99] 输出:99
提示:
- 1 <= nums.length <= 3 * 104
- -231 <= nums[i] <= 231 - 1
- nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次
**进阶:**你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
解答:
class Solution {
public int singleNumber(int[] nums) {
int ret = 0;
for (int i = 0; i < 32; ++i) {
int bitnums = 0;
int bit = 1 << i;
for (int num : nums) {
if ((num & bit) != 0)
bitnums++;
}
if (bitnums % 3 != 0)
ret |= bit;
}
return ret;
}
}
生成随机字符串(图算法、算法高阶)
生成一个由大写字母和数字组成的6位随机字符串,并且字符串不重复。
class java_384519 {
public static char[] generate() {
char[] letters = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
boolean[] flags = new boolean[letters.length];
char[] chs = new char[6];
for (int i = 0; i < chs.length; i++) {
int index;
do {
index = (int) (Math.random() * (letters.length));
} while (flags[index]);
chs[i] = letters[index];
flags[index] = true;
}
return chs;
}
}
本文内容到此结束了,
如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误❌疑问💬欢迎各位大佬指出。
保持热爱,奔赴下一场山海。🏃🏃🏃
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)