给定两个整数 A 和 B,返回任意字符串 S
程序员文章站
2022-08-17 23:22:58
给定两个整数 A 和 B,返回任意字符串 S,要求满足:(1)S 的长度为 A + B,且正好包含 A 个 'a' 字母与 B 个 'b' 字母;(2)子串 'aaa' 没有出现在 S 中;(3)子串 'bbb' 没有出现在 S 中。(1)S 的长度为 A + B,且正好包含 A 个 ‘a’ 字母与 B 个 ‘b’ 字母;(2)子串 ‘aaa’ 没有出现在 S 中;(3)子串 ‘bbb’ 没有出现在 S 中。)import java.util.Random;import java.uti...
给定两个整数 A 和 B,返回任意字符串 S,要求满足: (1)S 的长度为 A + B,且正好包含 A 个 'a' 字母与 B 个 'b' 字母; (2)子串 'aaa' 没有出现在 S 中; (3)子串 'bbb' 没有出现在 S 中。
(1)S 的长度为 A + B,且正好包含 A 个 ‘a’ 字母与 B 个 ‘b’ 字母;
(2)子串 ‘aaa’ 没有出现在 S 中;
(3)子串 ‘bbb’ 没有出现在 S 中。
)
import java.util.Random;
import java.util.Scanner;
import java.util.TreeSet;
public class Test1 {
public static void main(String[] args) {
int A, B; //输入的A,B的值
boolean b = true; //用于判断是否符合条件
Scanner sc = new Scanner(System.in);
System.out.print("请输入A的值:");
A = sc.nextInt();
System.out.print("请输入B的值:");
B = sc.nextInt();
int sum = A + B;
char[] chars = new char[sum]; //用于拼接的字符数组
int[] ch = new int[sum]; //用于保存字符顺序
int[] ch2 = new int[A]; //用于保存字符‘a’顺序
int[] ch3 = new int[B]; //用于保存字符‘b’顺序
Random r = new Random(0);
while (b){
b=false;
for (int i = 0; i < sum; i++) {
ch[i] = r.nextInt(sum);
for (int z = 0; z < i; z++) {
if (ch[i] == ch[z]) {
i--;
break;
}
}
if (i < A) {
ch2[i] = ch[i];
} else {
ch3[i - A] = ch[i];
}
}
ch2=SetArr(ch2,A);
ch3=SetArr(ch3,B);
//判断‘a’字符是否符合条件
for (int i=0;i<A-2;i++){
if(ch2[i+2]-ch2[i+1]==1&&ch2[i+1]-ch2[i]==1){
b=true;
break;
}
}
//判断‘b’字符是否符合条件
for (int i=0;i<B-2;i++){
if(ch3[i+2]-ch3[i+1]==1&&ch3[i+1]-ch3[i]==1){
b=true;
break;
}
}
}
//拼接符合条件的字符
for (int i = 0; i < sum; i++) {
if (i < A) {
chars[ch[i]] = 'a';
} else {
chars[ch[i]] = 'b';
}
}
//将拼接好的字符数组转换为字符串
String s = String.valueOf(chars);
System.out.println(s);
}
//排序
public static int[] SetArr(int[] arr, int n) {
TreeSet set = new TreeSet<String>();
for (int i = 0; i < n; i++) {
set.add(arr[i]);
}
Object[] ar = set.toArray();
for (int j = 0; j < ar.length; j++) {
arr[j] = (int) ar[j];
}
return arr;
}
}
本文地址:https://blog.csdn.net/study_slacker_/article/details/110479069
上一篇: idea配置连接数据库的超详细步骤
推荐阅读
-
给定两个整数 A 和 B,返回任意字符串 S
-
LeetCode 1 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
-
两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。...
-
c语言和Java语言实现,两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
[每日一题]给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。
-
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标,假设每种输入只会对应一个答案
-
python练习题---给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
-
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。