三、倒置字符串
==========================================================================
题目链接
将一句话的单词进行倒置,标点不倒置。比如 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())//测试用例中有多行输入 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)