【牛客网】输入输出类型题目整理,2021大厂Java知识点总结+面试题解析

【牛客网】输入输出类型题目整理,2021大厂Java知识点总结+面试题解析,第1张

【牛客网】输入输出类型题目整理,2021大厂Java知识点总结+面试题解析

三、倒置字符串

==========================================================================

题目链接

将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I,依次输出倒置之后的字符串,以空格分割。

示例:

输入

I like beijing.

输出

beijing. like I

代码如下:

import java.util.*;

public class Main {

//逆序输出字符串

public static void main(String[] args) {

Scanner scan=new Scanner(System.in);

String s=scan.nextLine();

String []ss=s.split(" ");

for (int i = ss.length-1; i >=0 ; i–) {

System.out.print(ss[i]+" ");

}

}

}

四、排序子序列

==========================================================================

题目链接

输入描述

输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)

第二行包括n个整数A_i(1 ≤ A_i ≤ 10^9),表示数组A的每个数字。

输出描述

输出一个整数表示牛牛可以将A最少划分为多少段排序子序列

示例:

输入

6

1 2 3 2 2 1

输出

2

题意就是将输入的序列分为x个递增或者递减序列,有x个序列即输出x。

思路就是将输入数字放入数组中,前后比较数值递增或者递减改变计数器就加一。

代码如下:

import java.util.*;

public class Main{

public static void main(String[] args){

Scanner scan=new Scanner(System.in);

while(scan.hasNextInt()){

int n=scan.nextInt();

int[] array=n

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

ew int[n];

//定义标志位 1为递增,-1为递减

for(int i=0;i

array[i]=scan.nextInt();

}

int flag=0;

//定义计数位

int count=1;

for(int i=1;i

if(array[i]>array[i-1]){

//一直大就走下去

if(flag==0){

flag=1;

}

if(flag==-1){

flag=0;

count++;

}

}else if(array[i-1]>array[i]){

if(flag==0){

flag=-1;

}

if(flag==1){

flag=0;

count++;

}

}

}

System.out.println(count);

}

}

}

五、字符集合

=========================================================================

题目连接

输入描述:

每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。

输出描述:

每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。

示例:

输入

abcqweracb

输出

abcqwer

思路:可以遍历输入的字符串将不重复的元素放到新的字符串中去。

代码如下:

import java.util.*;

public class Main{

public static void main(String[] args){

Scanner scan=new Scanner(System.in);

while(scan.hasNext()){

String str=scan.nextLine();

StringBuffer sb =new StringBuffer();

for(int i=0;i

char ch=str.charAt(i);

if(!sb.toString().contains(ch+"")){

sb.append(ch);

}

}

System.out.println(sb);

}

}

}

六、删除公共字符

===========================================================================

题目链接

输入描述:

每个测试输入包含2个字符串

输出描述:

输出删除后的字符串

示例:

输入

They are students.

aeiou

输出

Thy r stdnts.

运用字符串方法比较,如果是相同字符则不添加。

代码如下:

import java.util.*;

public class Main{

public static void main(String[] args){

Scanner scan=new Scanner(System.in);

ArrayList list=new ArrayList<>();

String s1=scan.nextLine();

String s2=scan.nextLine();

for(int i=0;i

char ch=s1.charAt(i);

if(!s2.contains(ch+"")){

list.add(ch);

}

}

for(int i=0;i

System.out.print(list.get(i));

}

}

}

七、组队竞赛

=========================================================================

题目链接

输入描述:

输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)

第二行包括3*n个整数a_i(1 ≤ a_i ≤ 10^9),表示每个参赛选手的水平值.

输出描述:

输出一个整数表示所有队伍的水平值总和最大值.

示例:

输入

2

5 2 8 5 1 5

输出

10

思路:将数组排序,返回n个从倒数第二个位置开始的数组元素,每次递减二。

代码如下:

import java.util.*;

public class Main{

public static void main(String[] agrs){

Scanner scan1=new Scanner(System.in);

Scanner scan2=new Scanner(System.in);

int n=scan2.nextInt();

//注意num的类型必须为long,int只能通过60%测试用例

long num=0;

int[]array=new int[n*3];

for(int i=0;i

array[i]=scan2.nextInt();

}

Arrays.sort(array);

for(int i=0;i

//返回n个,从倒数第二个位置开始每次减二的数字

num+=array[array.length-2*(i+1)];

}

System.out.print(num);

}

}

总结

=====================================================================

我们在编写程序中一定要多想想,多练习,熟悉那些常见方法,下次做题才能更快,更熟悉。

比如上述题中运用了String 的很多方法。

str1.contains(str2); 返回boolean类型的包含关系

char ch=s.charAt(i); //返回字符串i下标的字符(字符串转字符)

toString();//将其他类型生成新的字符串类型 (转为字符串类型)

tocharArray();//转换为字符类型的数组

str.split(" ");//以什么“ ” 分割开来

str.equlas(str1);//判断字符串内容是否相等

s.trim();//去字符串中空格

while(scan.hasNext())//测试用例中有多行输入

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5678350.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存