IT公司100题-17-第一个只出现一次的字符
2015-12-19 21:45
309 查看
问题描述:
在一个字符串中找到第一个只出现一次的字符。例如输入asdertrtdsaf,输出e。
分析:
最简单的方法是直接遍历,时间复杂度为O(n^2)。
进一步思考:
字符串中的字符,只有256种可能性,使用字符的为下标,扫描一遍,存储各个字符在字符串中的出现。第二次扫描字符串,查看每个字符在字符串中的出现次数,如果为1,输出即可。
代码实现:
在一个字符串中找到第一个只出现一次的字符。例如输入asdertrtdsaf,输出e。
分析:
最简单的方法是直接遍历,时间复杂度为O(n^2)。
进一步思考:
字符串中的字符,只有256种可能性,使用字符的为下标,扫描一遍,存储各个字符在字符串中的出现。第二次扫描字符串,查看每个字符在字符串中的出现次数,如果为1,输出即可。
代码实现:
package oschina.IT100; /** * @project: oschina * @filename: iT17.java * @version: 0.10 * @author: JM Han * @date: 12:54 2015/12/19 * @comment: find the 1st char that only exist once in string * @result: */ public class iT17 { public static Character findChar(String s){ int[] int_set = new int[256]; char[] char_set = s.toCharArray(); for(char c: char_set){ int_set[c]++; } for(char c: char_set){ if(int_set[c] == 1) return c; } return '\0'; } public static void main(String[] args) { System.out.println("The 1st char is: " + findChar("asdertrtdsaf")); } }
相关文章推荐
- JDBC事物处理——保持数据一致性案例
- openjudge 最小新整数
- 【SQLSERVER学习笔记】分页存储过程+调用
- archlinux在命令行模式下开机自动登陆
- 美团Android资源混淆保护实践
- Fragment理解
- 模式识别之knn---KNN(k-nearest neighbor algorithm)--从原理到实现
- 布局主要代码
- VS2012配置#系列快捷方式自动生成代码
- 几种经典的网络服务器架构模型的分析与比较
- windows下利用navicat连接oracle的一些配置问题总结
- Flask搭建简单图片识别服务器
- C语言程序设计进阶 第一周1.1笔记
- 编程粒度
- Smith Numbers(Poj1142)(质因数分解+素数判定)
- c语言随机数
- nginx的502错误及常见解决方法汇总
- 一些想说的话,无关技术
- 随意贴一段任意进制转十进制的代码
- MFC 方法记录 模拟用户登录系统