奇虎360——最后一个字符(利用BufferedReader输入数据)
2016-07-26 15:39
417 查看
题目描述
你要的最后一个字符就在下面这个字符串里,这个字符是下面整个字符串中第一个只出现一次的字符。(比如,串是abaccdeff,那么正确字符就是b了)题目要求
输入文件体积较大,请使用一些快速的输入输出手段,不推荐使用cin/cout,对Java并不推荐使用Scanner直接读写。
输入描述:
第一行,一个正整数T(T≤20) ,表示输入数据组数。 之后T行,每行一个字符串S。( 1≤S 的长度≤1000000 ,保证字符串中出现的字符的ASCII码在[0x21,0x7F)范围内,即均为可显示的非空白符,同时保证一定有解)
输出描述:
一共T 行,每行一个字符C ,表示所给的相应字符串中第一个只出现一次的字符。
输入例子:
2 abaccdeff testonline
输出例子:
b s
分析:需要注意的就是利用BufferedReader从控制台输入数据的方法。
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
System.in方法的描述:in
public static final InputStream
in 可以看出是字节流
BufferedReader要处理的是字符流,所以要利用InputStreamReader()进行字节流到字符流的转换。BufferedReader读取的方式readLine()的描述:
readLine
public String readLine() throws IOException
读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。
返回:包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null 抛出:
IOException- 如果发生 I/O 错误
读取的是字符串类型,所以还要Integer.parseInt(Sting s)进行类型的转换。利用while((s=in.readLine())!=null)判断是否读取到文件流的末尾,当读到文件流末尾的时候返回null给s。
import java.util.*; import java.io.*;//文件流引入io包,减少笔试编译次数 public class Main{ public static void main(String[] args)throws Exception { //控制台输入数据BufferedReader BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); String s=""; while((s=in.readLine())!=null)//readLine()读取返回字符串,若读取到文件末尾,返回null。 { int count=Integer.parseInt(s); for(int i=0;i<count;i++) { String ss=in.readLine(); char c=firstChar(ss); System.out.println(""+c); } } in.close(); } //字符串中找到第一个只出现一次字符的例程 public static char firstChar(String s) { HashMap<Character,Integer> map=new HashMap(); for(int i=0;i<s.length();i++) { if(!map.containsKey(s.charAt(i))) { map.put(s.charAt(i),1); }else { map.put(s.charAt(i),map.get(s.charAt(i))+1); } } char c=s.charAt(0); for(int i=0;i<s.length();i++) { if(map.get(s.charAt(i)) == 1) { c=s.charAt(i); break; } } return c; } }
相关文章推荐
- Javascript 二维数组去重
- DataBinding-是时候放弃butterknife了
- 文件上传时jquery.form.js中提示form.submit SCRIPT5: 拒绝访问
- 如何解决jsp:include标签在包含html文件时遇到的乱码问题
- JS模板laytpl
- 移动设备safari不支持jquery的live绑定的解决办法
- Jquery+Struts的<selected>二级联动
- 时间处理总结(三)javascript与WCF
- Angularjs轻松实现表格按指定列排序
- 兼容各个浏览器的H.264播放: H.264+HTML5+FLOWPLAYER+WOWZA+RMTP
- jquery安卓手机按键监听
- js去掉字符串中的空格---用正则表达式;
- nodejs、gulp调试工具node-inspector使用
- JQuery之CSS选择器
- 转:js中this关键字详解
- 20分钟打造你的Bootstrap站点
- CSS中margin和padding的区别
- javascript 0000000序列递增算法
- DL学习笔记【13】caffe参数调节-命令行
- js图片上传预览