快手编程题 ac了三道,最后一道没时间了,太菜了
1.版本号
import java.util.Scanner;
public class 版本号 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in) ;
int n = sc.nextInt();
String[] version1 = new String[n];
String[] version2 = new String[n];
for(int i = 0 ; i < n ; i++){
version1[i] = sc.next();
version2[i] = sc.next();
}
int res = 0 ;
for(int i = 0 ; i < n ; i ++){
res = compareVersion(version1[i],version2[i]);
if(res == -1){
System.out.println("true");
}else {
System.out.println("false");
}
}
}
private static int compareVersion(String s, String s1) {
String[] v1 = s.split("\\.");
String[] v2 = s1.split("\\.");
int l1 = v1.length;
int l2 = v2.length ;
int min = Math.min(l1,l2);
for(int i = 0 ; i < min ; i++){
int i1 = Integer.valueOf(v1[i]);
int i2 = Integer.valueOf(v2[i]);
if(i1<i2){
return -1 ;
}else if(i1>i2){
return 1 ;
}
}
if(l1>l2){
for(int i = min ; i < l1 ; i ++){
if(Integer.valueOf(v1[i])!=0){
return 1 ;
}
}
return 0 ;
}else if(l1<l2){
for(int i = min ; i < l2 ; i ++){
if(Integer.valueOf(v2[i])!=0){
return -1 ;
}
}
return 0 ;
}else {
return 0 ;
}
}
}
2.累计平方和
import java.util.Set;
public class 累计平方和 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = sc.nextInt();
}
for (int i = 0; i < n; i++) {
boolean res = isHappy(nums[i]);
if (res == true) {
System.out.println("true");
} else {
System.out.println("false");
}
}
}
public static boolean isHappy(int n) {
Set<Integer> set = new HashSet<>();
int m = 0;
while (true) {
while (n != 0) {
m += Math.pow(n % 10, 2);
n /= 10;
}//82 68 100 1
if (m == 1) {
return true;//true
}
if (set.contains(m)) {
return false;
} else {
set.add(m);//82 68 100
n = m;//n=82 n=68 n=100
m = 0;//m=0 m=0 m=0
}
}
}
} 3.合并
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = null;
String s1 = null;
s = sc.nextLine();
s1 = sc.nextLine();
String[] ss = s.split(" ");
String[] ss1 = s1.split(" ");
char[] ch1 = s.toCharArray();
int[] nums = new int[ss.length];
StringBuffer str = new StringBuffer();
int m = 0 ;
for(int i = 0 ; i < ch1.length ; i ++ ){
if(ch1[i] == ' '){
continue;
}
nums[m ++] = ch1[i]-'0';
}
if(nums.length <= 4){
for(int i = 0 ; i < nums.length ; i ++){
str.append(nums[i]).append(" ");
}
str.append(s1);
}else{
int k = 0 ;
for(int i = 0 ,j = 0 ; i < nums.length&&j<ss1.length ; ){
k ++ ;
if(k > 4){
str.append(ss1[j++]).append(" ");
k = 0 ;
}else{
str.append(nums[i++]).append(" ");
}
while (i <= nums.length - 1 && j == ss1.length){
str.append(nums[i++]).append(" ");
}
while (j<=ss1.length-1 && i == nums.length){
str.append(ss1[j++]).append(" ");
}
}
}
System.out.println(str.toString());
}
}
#快手##笔试题目##题解#
阿里云工作强度 647人发布