华为机试练习_7-10:取近似值_合并表记录_提取不重复的整数_字符个数统计

07_取近似值

在这里插入图片描述

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextFloat()){
            float num = scanner.nextFloat();
            System.out.println((int)(num+0.5));
        }
    }
}

08_合并表记录

数据表记录包含表索引和数值(int范围的整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
在这里插入图片描述

import java.util.*;
/**
 * 输入描述:
 * 先输入键值对的个数
 * 然后输入成对的index和value值,以空格隔开
 *
 * 输出描述:
 * 输出合并后的键值对(多行)
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //使用TreeMap保证key的有序性
        TreeMap<Integer,Integer> map = new TreeMap<>();
        while(scanner.hasNext()){
            //先获取键值对的个数
            int num = scanner.nextInt();
            //循环输入每一对键值对
            for(int i=0;i<num;i++){
                //获取index
                int index = scanner.nextInt();
                //获取value
                int value = scanner.nextInt();
                if(map.containsKey(index)){
                    int newValue = map.get(index) + value;
                    map.put(index,newValue);
                }else{
                    map.put(index,value);
                }
            }
            //遍历map,输出剑指对
            Set<Integer> keySet = map.keySet();
            for(Integer key:keySet){
                System.out.println(key+" "+map.get(key));
            }
        }
    }
}

09_题目不重复的整数

输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
在这里插入图片描述

方法1

思路一:使用字符串的相关方法,一次截取一个字符并区去重
contains(String str):判断参数str是否被包含在字符串中,并返回一个布尔类型的值。

1 String str = "student";
2 str.contains("stu");//true
3 str.contains("ok");//false

代码实现,方法一:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            String str = scanner.next();
            int length = str.length();
            //先将最后一个数取出,防止字符串越界
            String string = str.substring(length-1);

            //从右向左依次截取每个数并去重
            for(int i=length-2;i>=0;i--){
                String substring = str.substring(i, i + 1);
                if(!string.contains(substring)){
                    string+=substring;
                }
            }
            System.out.println(string);
        }
    }
}

方法2

代码实现,方法二:使用HashSet来去除重复元素

public class HashSetDemo {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<String>();
        set.add("语文");
        set.add("数学");
        set.add("英语");
        set.add("数学");
        set.add("语文");

        for(String key:set){
            System.out.println(key);
        }
    }
}

在这里插入图片描述
代码实现:

import java.util.HashSet;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        HashSet<String> set = new HashSet();

        while (scanner.hasNext()){
            String str = scanner.next();
            StringBuilder stringBuilder = new StringBuilder(str);
            stringBuilder.reverse();
            for(int i=0;i<stringBuilder.length();i++){
                String substring = stringBuilder.substring(i, i + 1);
                if(set.add(substring)){
                    System.out.print(substring);
                }
            }
        }
    }
}

10_字符个数统计

编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。
在这里插入图片描述
本题思路和上题思路相同,使用HashSet来去重

import java.util.HashSet;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        HashSet<String> set = new HashSet<>();
        while (scanner.hasNext()){
            String str = scanner.next();
            
            int len = str.length();

            for(int i=0;i<len;i++){
                set.add(str.substring(i,i+1));
            }

            System.out.println(set.size());
        }
    }
}
发布了716 篇原创文章 · 获赞 130 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/qq_42764468/article/details/105403062