文章目录
1. 字符集合
🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕🍕
注意:该题需要多组输入
代码如下:
import java.util.*;
public class Main {
public static String func(String str) {
//最后一个字符z的ascii码值是122,因为只有大小写字母,为了节省空间,所以减去'A'后为57
//所以数组的空间可以设置为58(最后一个下标是57)
//这里也可以不计算不减'A',直接把数组空间开辟的大一点,不影响
int[] array = new int[58];
StringBuilder sb = new StringBuilder();
for(int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
//判断数组中此元素是否为0
//是0表示没遇见过这个字符,是1表示已经遇见过这个字符
if(array[ch-'A'] == 0) {
sb.append(ch);
array[ch-'A']++;
}
}
return sb.toString();
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(scan.hasNextLine()) {
String str = scan.nextLine();
String ret = func(str);
System.out.println(ret);
}
}
}
2. 合并两个有序的数组
🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪🥪
题目给定的代码如下:
代码如下:
import java.util.*;
public class Solution {
public void merge(int A[], int m, int B[], int n) {
//三个下标,从A和B的尾部开始比较,大的放到A数组k下标
int i = m - 1;
int j = n - 1;
int k = m + n -1;
while(i >= 0 && j >= 0) {
if(A[i] >= B[j]) {
A[k] = A[i];
i--;
k--;
} else {
A[k] = B[j];
j--;
k--;
}
}
//判断谁先走完
while(i >= 0) {
A[k] = A[i];
i--;
k--;
}
while(j >= 0) {
A[k] = B[j];
j--;
k--;
}
}
}