掌阅科技2023年秋招后端岗笔试真题--编程题
1、删除有序数组重复元素
给定一个整形数组 nums,固定升序排列,请你删除重复元素,返回删除后数组的新长度。
方法:双指针
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int j = 0;
String g = in.next();
String[] nums = g.split(",");
int fast =1;
int slow =1;
while(fast<nums.length){
if(!nums[fast].equals(nums[fast-1])){
nums[slow++]=nums[fast];
}
fast++;
}
System.out.println(slow);
}
}
2、字符逆序
将一个字符串str的内容颠倒过来,并输出。
如:输入“I am a student”,输出“tneduts a ma I”。
保证字符串长度不超过100。
方法:直接使用Java中的StringBuffer的reverse方法。
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str=in.nextLine();
in.close();
String reverse = new StringBuffer(str).reverse().toString();
System.out.print(reverse);
}
}
3、在字符串中找出连续最长的数字串
现有一个字符串str,输出字符串str中的最长的数字子串。
方法:使用split找到连续的数字串,输出最长的数字串。
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
String[] nums=str.split("[a-zA-Z]+");
int count=0;
for(int i=0;i<nums.length;i++){
if(nums[i].length()>count){
count=nums[i].length();
}
}
for(int i=0;i<nums.length;i++){
if(nums[i].length()==count){
System.out.print(nums[i]);
break;
}
}
}
}