15天大厂真题带刷day1
牛客网在线编程_算法面试_15天大厂真题带刷 (nowcoder.com)
ZT1 23年OPPO-a的翻转
描述
数字𝑎a翻转数位得到数字𝑏b,计算𝑎+𝑏a+b。
输入描述:
一个正整数𝑎 (1⩽𝑎⩽109)a(1⩽a⩽109)。保证𝑎a在十进制下每一位都非00。
输出描述:
一个正整数表示答案。
示例1
输入:
12输出:
33说明:
正整数𝑎=12a=12,翻转得到𝑏=21b=21,𝑎+𝑏=33a+b=33。示例2
输入:
23输出:
55
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a = in.nextInt();
StringBuilder s = new StringBuilder();
int c = Integer.parseInt(s.append(a).reverse().toString());
System.out.println(a+c);
}
}
ZT2 小美的因子查询
描述
小美对偶数因子很感兴趣,她将进行 𝑇T 次询问,每次都会给出一个正整数 𝑥x,请你告诉她 𝑥x 是否存在至少一个偶数因子。也就是说 𝑥x 是否存在某个因子 [注1][注1] 是偶数。
注1:𝑦y 是 𝑥x 的因子,当且仅当 𝑥 mod 𝑦=0xmody=0 。
输入描述:
每个测试文件均包含多组测试数据。第一行输入一个整数 𝑇 (1≤𝑇≤105)T (1≤T≤105) 代表数据组数,每组测试数据描述如下:
在一行上输入一个整数 𝑥 (1≤𝑥≤109)x (1≤x≤109) 代表小美询问的正整数。输出描述:
如果 𝑥x 存在至少一个偶数因子,在一行上输出 YESYES ,否则输出 NONO 。
示例1
输入:
2 1 4输出:
NO YES说明:
11 不存在偶数因子,44 存在偶数因子 22 。
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t=in.nextInt();
int x=0;
while(t-->0){
x=in.nextInt();
if(x%2==0)
System.out.println("YES");
else
System.out.println("NO");
}
}
}
ZT3 游游的数字圈
描述
游游拿到了一串数字,她想知道这串数字一共有多少个圆圈?
提示:数字0、6、9这三种数字各有一个圆圈,数字8有两个圆圈。
输入描述:
一个字符串,仅由数字字符组成。
长度不超过100000。输出描述:
该字符串包含的圆圈数量。
示例1
输入:
1234567890输出:
5
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.next();
int l1 = s.length();
String s1 = s.replaceAll("0", "").replaceAll("6", "").replaceAll("9", "");
int l2=s1.length();
int ans=0;
ans+=l1-l2;
s1=s1.replaceAll("8","");
int l3=s1.length();
ans+=2*(l2-l3);
System.out.println(ans);
}
}
ZT4 游游的整数切割
描述
游游拿到了一个正整数,她希望将它切割成两部分,使得它们的和为偶数。游游想知道有多少种合法的切割方案?
注:切割后的正整数允许出现前导零。输入描述:
一个正整数,大小不超过1010000010100000
输出描述:
一个整数,代表切割的方案数。
示例1
输入:
103复制输出:
1复制说明:
切割成1+03=4是合法的,但10+3=13为奇数,不符合要求。所以有1种合法方案。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//整数是不是偶数,个位数就决定
Scanner scanner = new Scanner(System.in);
String s = scanner.next();
int ans = 0;
char last = s.charAt(s.length() - 1);
for (int i = 0; i < s.length() - 1; i++) {
if ((( s.charAt(i) - '0') + (last - '0')) % 2 == 0) {
ans++;//char->int
}
}
System.out.println(ans);
}
}
ZT6 小红的字符串构造
描述
小红拿到了一个字符串𝑠s,她准备构造一个和𝑠s长度相同的字符串𝑡t:满足以下条件:
1. 𝑡t的字符集和𝑠s的相同(去重后的,也就是说不考虑数量)
2. 𝑡t的每个位置的字符都和𝑠s不同。
例如若 s="aabbc",那么𝑡t可以构造为"cbaca"。
你能帮帮小红吗?输入描述:
输入一个仅由小写字母组成的字符串𝑠s,长度不超过 200000。
输出描述:
如果无解,请输出 -1。
否则输出任意合法的字符串。示例1
输入:
aabbc复制输出:
cbaca复制说明:
"bcacb"等字符串也是合法的构造。
import java.util.Scanner;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
// 将输入的字符串转换成字符数组
char[] c = s.toCharArray();
// 记录原字符串中出现的字符种类
boolean[] flag = new boolean[26];
for (int i = 0; i < c.length; i++) {
flag[c[i] - 'a'] = true;
}
// 在每次遍历过程中,将遇到的字符变成离它距离最近的右边一个字符
for (int i = 0; i < c.length; i++) {
// 记录交换的标记;标记的作用是,如果改变了说明该位置的字符与原来的字符不一致;否则一致则没有变化,不符合要求,直接返回-1即可。
boolean t = false;
int k = c[i] - 'a';
for (int j = k + 1; j < 26 + k; j++) {
if (flag[j % 26]) {
t = true;
c[i] = (char) (j % 26 + 'a');
}
}
if (!t) {
System.out.println(-1);
return ;
}
}
System.out.println(new String(c));
}
}
原文地址:https://blog.csdn.net/qq_74794797/article/details/143983331
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!