一、题型一
(共两题,每题100分,难度1颗星)
1.一个字符串,首尾相连,计算出现偶数个’o’的字符串最长的长度
例子:
alolobo
输出:6
looxdolx
输出:7
bcbcbc
输出:6
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* @author AngleWang
* @datetime 2021-03-05 13:58
* 通过率100%
*/
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String temp;
while ((temp=br.readLine())!=null) {
int length=temp.length();
int sum=0;
for(int i=0;i<length;i++) {
if(temp.charAt(i)=='o') {
sum++;
}
}
if(sum%2==0) {
System.out.println(temp.length());
} else {
System.out.println(temp.length()-1);
}
}
}
}
2.从一堆数种取出所有众数,输出中间的那个,如果有偶数个众数,输出中间两个的平均值
用例1:
2 1 5 4 3 3 9 2 7 4 6 2 15 4 2 4
3
用例2:
5 1 5 3 5 2 5 5 7 6 7 3 7 11 7 55 7 9 98 9 17 9 15 9 9 1 39
7
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/**
* @author AngleWang
* @datetime 2021-03-05 13:58
* 通过率:95%
*/
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String temp;
while ((temp=br.readLine())!=null) {
//初始化输入
String[] s = temp.split(" ");
int[] array=new int[s.length];
for(int i=0;i<s.length;i++) {
array[i]=Integer.parseInt(s[i]);
}
//计算个数
int[] result=new int[1000];//1~999
int max=0;
for(int i=0;i<s.length;i++) {
result[array[i]]++;
if(result[array[i]]>max) {
max=result[array[i]];
}
}
//存放众数并计算中位数
List<Integer> list=new ArrayList<>(s.length/max);
for(int i=0;i<1000;i++) {
if(result[i]==max) {
list.add(i);
}
}
boolean flag=list.size()%2==0;
int index=list.size()/2;
if(!flag) {//奇数个众数
System.out.println(list.get(index));
} else {//偶数个众数
int oo=(list.get(index)+list.get(index-1))/2;
System.out.println(oo);
}
}
}
}
二、题型二
(共一题,200分,难度两颗星)
第一个数,给出字母的范围,n表示从前n个字母中取
给出字符串
求没有回文子串的下一个字符串
求不出就输出NO
用例1:
3
cba
结果:NO
用例2:
5
cba
结果:cbd
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* @author AngleWang
* @datetime 2021-03-05 13:58
* 通过率65%
*/
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String temp;
while ((temp = br.readLine()) != null) {
int n = Integer.parseInt(temp);
StringBuilder sb =new StringBuilder(br.readLine());
int length=sb.length();
boolean flag0=false;
for(int i=length-1;i>-1;i--) {//从最后一个到第一个
boolean flag1=false;//从头到尾改完了,就可以break;
for(int j=i;j<length;j++) {//从i改到最后
boolean flag=false;
for(int k=sb.charAt(j)+1;k<n+'a';k++) {//遍历字母
if((j<1||k!=sb.charAt(j-1))&&(j<2||k!=sb.charAt(j-2))) {//不等于前一个也不等于前前个
flag=true;
sb.replace(j,j+1,""+(char)k);
break;
}
}
if(!flag) {
break;
}
if(flag&&j==length-1) {
flag1=true;
}
}
if(flag1) {
flag0=true;
break;
}
}
if(flag0) {
System.out.println(sb);
} else {
System.out.println("NO");
}
}
}
}