牛客刷题组队竞速删除公共字符

组队竞速

题目:

牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。
例如: 一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3 一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3
一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2 为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大。 如样例所示:
如果牛牛把6个队员划分到两个队伍 如果方案为: team1:{1,2,5}, team2:{5,5,8}, 这时候水平值总和为7.
而如果方案为: team1:{2,5,8}, team2:{1,5,5}, 这时候水平值总和为10.
没有比总和为10更大的方案,所以输出10.

题解:
队伍的水平值等于该队伍队员中第二高水平值,为了所有队伍的水平值总和最大的解法,也就是说每个队伍的第二个值是尽可能大的值。所以实际值把最大值放到最右边,最小是放到最左边。

import java.util.*;
public class Main{
     
    public static void main(String[] args){
     
        Scanner scan=new Scanner(System.in);
        int n=scan.nextInt();
        int[] array=new int[3*n];
        long sum=0;
        for(int i=0;i<3*n;i++){
     
        array[i]=scan.nextInt();
        }
        Arrays.sort(array);
        for(int i=0;i<n;i++){
     
        sum=sum+array[array.length-2*(i+1)];
        }
        System.out.println(sum);
    }
}

删除公共字符

题目:

输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”

题解:
1.遍历str2这个字符串,把对应的字符放到hash[]中
2.遍历str1这个字符串,找到==0的

import java.util.*;

public class Main{
     
    public static void main(String[] args){
     
        Scanner scan=new Scanner(System.in);
        String str1=scan.nextLine();
        String str2=scan.nextLine();
        HashMap<Character,Integer> map=new HashMap<>();
      //遍历str2这个字符串
        for(int i=0;i<str2.length();i++){
     
     //当前拿到的字符串判断之前是否存在与map中
            if(map.get(str2.charAt(i))==null){
     
                map.put(str2.charAt(i),1);
            }else{
     
                map.put(str2.charAt(i),map.get(str2.charAt(i)+1));
            }
        }
        
        String ret="";
       //遍历str1
        for(int i=0;i<str1.length();i++){
     
            if(map.get(str1.charAt(i))==null){
     
                ret+=str1.charAt(i);
            }
        }
        System.out.println(ret);
    }
}

你可能感兴趣的:(算法,java)