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());
}
}
}