[编程题] 简单错误记录
2017-08-11 11:25
141 查看
时间限制:1秒
空间限制:65536K
开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
处理:
1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加;(文件所在的目录不同,文件名和行号相同也要合并)
2.超过16个字符的文件名称,只记录文件的最后有效16个字符;(如果文件名不同,而只是文件名的后16个字符和行号相同,也不要合并)
3.输入的文件可能带路径,记录文件名称不能带路径
输入描述:
一行或多行字符串。每行包括带路径文件名称,行号,以空格隔开。
文件路径为windows格式
如:E:\V1R2\product\fpgadrive.c 1325
输出描述:
将所有的记录统计并将结果输出,格式:文件名代码行数数目,一个空格隔开,如: fpgadrive.c 1325 1
结果根据数目从多到少排序,数目相同的情况下,按照输入第一次出现顺序排序。
如果超过8条记录,则只输出前8条记录.
如果文件名的长度超过16个字符,则只输出后16个字符
输入例子1:
E:\V1R2\product\fpgadrive.c 1325
输出例子1:
fpgadrive.c 1325 1
测试用例:
e:\1\aa3.txt 3 e:\3\aa1.txt 2 e:\2\aa2.txt 3e:\3\aa1.txt 1 e:\1\aa1.txt 3 e:\3\aa1.txt 2 e:\1\aa3.txt 3 e:\2\aa3.txt 2e:\1\aa1.txt 2 e:\3\aa3.txt 2 e:\1\aa2.txt 2 e:\1\aa3.txt 1 e:\1\aa3.txt 1e:\2\aa3.txt 2 e:\1\aa2.txt 1 e:\3\aa1.txt 2 e:\1\aa1.txt
3 e:\2\aa1.txt 1e:\3\aa3.txt 2 e:\1\aa1.txt 1 e:\2\aa2.txt 2 e:\3\aa3.txt 2 e:\1\aa2.txt 1e:\1\aa3.txt 2 e:\1\aa3.txt 3 e:\1\aa2.txt 3 e:\3\aa1.txt 3 e:\2\aa2.txt 2e:\1\aa1.txt 1 e:\2\aa3.txt 1 e:\3\aa1.txt 1 e:\2\aa1.txt 3 e:\3\aa3.txt 2e:\1\aa3.txt 3 e:\2\aa3.txt
3 e:\1\aa2.txt 3 e:\2\aa2.txt 1 e:\1\aa3.txt 1e:\1\aa3.txt 1 e:\3\aa3.txt 3 e:\3\aa3.txt 2 e:\1\aa2.txt 3 e:\1\aa2.txt 3e:\1\aa2.txt 3 e:\1\aa1.txt 1 e:\2\aa3.txt 1 e:\3\aa3.txt 1 e:\2\aa3.txt 2e:\3\aa1.txt 3 e:\2\aa2.txt 2 e:\2\aa2.txt 2 e:\2\aa3.txt 1 e:\1\aa3.txt
3e:\3\aa1.txt 2 e:\3\aa2.txt 2 e:\1\aa2.txt 1 e:\2\aa2.txt 1 e:\2\aa1.txt 2e:\2\aa2.txt 1 e:\1\aa2.txt 1 e:\2\aa3.txt 1 e:\2\aa2.txt 1 e:\2\aa1.txt 2e:\3\aa2.txt 3 e:\3\aa1.txt 3 e:\2\aa2.txt 3 e:\2\aa3.txt 1 e:\3\aa3.txt 2 e:\2\aa3.txt1 e:\1\aa1.txt 2 e:\3\aa3.txt
1 e:\3\aa1.txt 1 e:\2\aa2.txt 3 e:\3\aa3.txt 2e:\2\aa1.txt 3 e:\1\aa3.txt 3 e:\3\aa2.txt 1 e:\2\aa1.txt 3 e:\1\aa3.txt 3e:\2\aa2.txt 2 e:\1\aa1.txt 2 e:\3\aa1.txt 1 e:\1\aa3.txt 1 e:\3\aa1.txt 2e:\1\aa1.txt 2 e:\1\aa1.txt 3 e:\3\aa1.txt 1 e:\3\aa1.txt 1 e:\2\aa3.txt
3e:\2\aa2.txt 1 e:\2\aa1.txt 2 e:\2\aa2.txt 1 e:\3\aa2.txt 3 e:\1\aa2.txt 1e:\3\aa2.txt 2 e:\2\aa1.txt 1 e:\2\aa3.txt 3 e:\1\aa1.txt 2 e:\1\aa1.txt 1e:\1\aa1.txt 2
对应输出应该为:
aa1.txt 2 14 aa3.txt 1 13 aa1.txt 1 12 aa2.txt 1 12aa3.txt 3 11 aa3.txt 2 11 aa2.txt 3 10 aa1.txt 3 9
package huawei2016;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
publicclass ErrorRecoder {
publicstaticvoidmain(String[]args)//输出有序,记录不能用hashmap,要用treemap
{
Map<String,Integer>
map=new LinkedHashMap();//LinkedHashMap按put顺序保存记录
Scanner
scan = newScanner(System.in);//这种输入要学会
int
count=0;//记录行数,
while(scan.hasNext())//这是要接受多组输入的节奏啊
{
String
path=scan.next();
String
filename=path.substring(path.lastIndexOf("\\")+1);
if(filename.length()>16)
filename=filename.substring(filename.length()-16);
intlinenum=scan.nextInt();//行号
String
record=filename+" "+linenum;
if(map.containsKey(record))
map.put(record, (int)map.get(record)+1);
else
map.put(record, 1);
}
//相当于按ctrl+z循环结束,然后执行下方步骤
scan.close();
List<Map.Entry<String,Integer>>list=newLinkedList<Map.Entry<String,Integer>>(map.entrySet());
Collections.sort(list,new Comparator<Map.Entry<String,
Integer>>()
{
//降序
@Override
publicintcompare(Entry<String,Integer>args0,Entry<String,Integer>args1)
{
returnargs1.getValue()-args0.getValue();
}
});
intprintlen=map.size();
if(map.size()>8)
printlen=8;
for(Map.Entry<String,Integer>mapping:list)
{
printlen--;
if(printlen<0)
break;
System.out.println(mapping.getKey()+"
"+mapping.getValue());
}
}
}
空间限制:65536K
开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
处理:
1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加;(文件所在的目录不同,文件名和行号相同也要合并)
2.超过16个字符的文件名称,只记录文件的最后有效16个字符;(如果文件名不同,而只是文件名的后16个字符和行号相同,也不要合并)
3.输入的文件可能带路径,记录文件名称不能带路径
输入描述:
一行或多行字符串。每行包括带路径文件名称,行号,以空格隔开。
文件路径为windows格式
如:E:\V1R2\product\fpgadrive.c 1325
输出描述:
将所有的记录统计并将结果输出,格式:文件名代码行数数目,一个空格隔开,如: fpgadrive.c 1325 1
结果根据数目从多到少排序,数目相同的情况下,按照输入第一次出现顺序排序。
如果超过8条记录,则只输出前8条记录.
如果文件名的长度超过16个字符,则只输出后16个字符
输入例子1:
E:\V1R2\product\fpgadrive.c 1325
输出例子1:
fpgadrive.c 1325 1
测试用例:
e:\1\aa3.txt 3 e:\3\aa1.txt 2 e:\2\aa2.txt 3e:\3\aa1.txt 1 e:\1\aa1.txt 3 e:\3\aa1.txt 2 e:\1\aa3.txt 3 e:\2\aa3.txt 2e:\1\aa1.txt 2 e:\3\aa3.txt 2 e:\1\aa2.txt 2 e:\1\aa3.txt 1 e:\1\aa3.txt 1e:\2\aa3.txt 2 e:\1\aa2.txt 1 e:\3\aa1.txt 2 e:\1\aa1.txt
3 e:\2\aa1.txt 1e:\3\aa3.txt 2 e:\1\aa1.txt 1 e:\2\aa2.txt 2 e:\3\aa3.txt 2 e:\1\aa2.txt 1e:\1\aa3.txt 2 e:\1\aa3.txt 3 e:\1\aa2.txt 3 e:\3\aa1.txt 3 e:\2\aa2.txt 2e:\1\aa1.txt 1 e:\2\aa3.txt 1 e:\3\aa1.txt 1 e:\2\aa1.txt 3 e:\3\aa3.txt 2e:\1\aa3.txt 3 e:\2\aa3.txt
3 e:\1\aa2.txt 3 e:\2\aa2.txt 1 e:\1\aa3.txt 1e:\1\aa3.txt 1 e:\3\aa3.txt 3 e:\3\aa3.txt 2 e:\1\aa2.txt 3 e:\1\aa2.txt 3e:\1\aa2.txt 3 e:\1\aa1.txt 1 e:\2\aa3.txt 1 e:\3\aa3.txt 1 e:\2\aa3.txt 2e:\3\aa1.txt 3 e:\2\aa2.txt 2 e:\2\aa2.txt 2 e:\2\aa3.txt 1 e:\1\aa3.txt
3e:\3\aa1.txt 2 e:\3\aa2.txt 2 e:\1\aa2.txt 1 e:\2\aa2.txt 1 e:\2\aa1.txt 2e:\2\aa2.txt 1 e:\1\aa2.txt 1 e:\2\aa3.txt 1 e:\2\aa2.txt 1 e:\2\aa1.txt 2e:\3\aa2.txt 3 e:\3\aa1.txt 3 e:\2\aa2.txt 3 e:\2\aa3.txt 1 e:\3\aa3.txt 2 e:\2\aa3.txt1 e:\1\aa1.txt 2 e:\3\aa3.txt
1 e:\3\aa1.txt 1 e:\2\aa2.txt 3 e:\3\aa3.txt 2e:\2\aa1.txt 3 e:\1\aa3.txt 3 e:\3\aa2.txt 1 e:\2\aa1.txt 3 e:\1\aa3.txt 3e:\2\aa2.txt 2 e:\1\aa1.txt 2 e:\3\aa1.txt 1 e:\1\aa3.txt 1 e:\3\aa1.txt 2e:\1\aa1.txt 2 e:\1\aa1.txt 3 e:\3\aa1.txt 1 e:\3\aa1.txt 1 e:\2\aa3.txt
3e:\2\aa2.txt 1 e:\2\aa1.txt 2 e:\2\aa2.txt 1 e:\3\aa2.txt 3 e:\1\aa2.txt 1e:\3\aa2.txt 2 e:\2\aa1.txt 1 e:\2\aa3.txt 3 e:\1\aa1.txt 2 e:\1\aa1.txt 1e:\1\aa1.txt 2
对应输出应该为:
aa1.txt 2 14 aa3.txt 1 13 aa1.txt 1 12 aa2.txt 1 12aa3.txt 3 11 aa3.txt 2 11 aa2.txt 3 10 aa1.txt 3 9
package huawei2016;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
publicclass ErrorRecoder {
publicstaticvoidmain(String[]args)//输出有序,记录不能用hashmap,要用treemap
{
Map<String,Integer>
map=new LinkedHashMap();//LinkedHashMap按put顺序保存记录
Scanner
scan = newScanner(System.in);//这种输入要学会
int
count=0;//记录行数,
while(scan.hasNext())//这是要接受多组输入的节奏啊
{
String
path=scan.next();
String
filename=path.substring(path.lastIndexOf("\\")+1);
if(filename.length()>16)
filename=filename.substring(filename.length()-16);
intlinenum=scan.nextInt();//行号
String
record=filename+" "+linenum;
if(map.containsKey(record))
map.put(record, (int)map.get(record)+1);
else
map.put(record, 1);
}
//相当于按ctrl+z循环结束,然后执行下方步骤
scan.close();
List<Map.Entry<String,Integer>>list=newLinkedList<Map.Entry<String,Integer>>(map.entrySet());
Collections.sort(list,new Comparator<Map.Entry<String,
Integer>>()
{
//降序
@Override
publicintcompare(Entry<String,Integer>args0,Entry<String,Integer>args1)
{
returnargs1.getValue()-args0.getValue();
}
});
intprintlen=map.size();
if(map.size()>8)
printlen=8;
for(Map.Entry<String,Integer>mapping:list)
{
printlen--;
if(printlen<0)
break;
System.out.println(mapping.getKey()+"
"+mapping.getValue());
}
}
}
相关文章推荐
- [编程题]简单错误记录
- [编程题] 简单错误记录
- C++知识点之string,结合华为编程题:简单错误记录分析(附加容器pair知识点)
- 编程题——简单错误记录
- 华为2016校园招聘上机笔试题[编程题] 简单错误记录
- [编程题]简单错误记录
- [编程题] 简单错误记录
- 华为2016校园招聘题----[编程题]简单错误记录(JAVA版)
- 华为2016校招笔试编程题(简单错误记录)
- OJ 系列之简单错误记录(转)
- [华为机试题]简单错误记录
- 简单错误记录:小心用hash值==0判断是否存在。最好用find.
- 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
- 华为OJ-------简单错误记录
- python 简单擦错误记录
- HWOJ 简单错误记录
- 【华为机试】简单错误记录
- 简单错误记录
- 华为2016校园招聘上机笔试题2:简单错误记录(并前面错误发现修改1)
- [华为机试]简单错误记录