查找字符串中第一个只出现一次的字符

来源:互联网 发布:淘宝联盟ios版旧版本 编辑:程序博客网 时间:2024/04/29 20:01
package Exam;import java.util.HashMap;/**  * 2013宜搜校园招聘笔试题 * 查找字符串中第一个只出现一次的字符 */public class FirstOnceChar {/** * 方法一:遍历每个字符,判断这个字符在字符串中第一次出现 * 和最后一次出现的索引是否一样  其实时间复杂度还是O(n^2) */public static char findFirstOnce(String s) {char ch = ' ';for(int i = 0; i < s.length(); i++) {char c = s.charAt(i);if(s.indexOf(c) == s.lastIndexOf(c)) {ch = c;break;}}return ch;}/** * 方法二:把字符和字符出现的次数存放到一个HashMap中, * 遍历两次字符串,第一次把字符存到HashMap中并统计字符出现的次数, * 第二次遍历字符串,第一个出现次数为1的字符就是所求 * 时间复杂度为O(n) */public static char findFirstOnce1(String s) {char ch=' ';HashMap<String,Integer> map = new HashMap<String,Integer>();for(int i = 0; i < s.length(); i++) {String str = String.valueOf(s.charAt(i));if(map.containsKey(str)) {int value = map.get(str);map.put(str, value+1);}elsemap.put(str, 1);}for(int i = 0; i < s.length(); i++) {String str = String.valueOf(s.charAt(i));if(map.get(str)==1) {    ch = s.charAt(i);    break;}}return ch;}public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(findFirstOnce1("ababccdeef"));}}

原创粉丝点击