【剑指offer】第一个只出现一次的字符

原创 2016年08月31日 10:15:33

题目描述

在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串,返回-1。位置索引从0开始

第一个只出现一次的字符是关键,就意味着需要所有的字符进行出现次数的统计,所以我们需要两次遍历:第一次获取每个字符出现的次数;第二次把第一个只出现一次的字符找到。在Java中可以通过HashMap实现对每个字符次数的统计,由于在题目中并没有我们限定使用Java提供的内置结构,所以可以通过这种办法迅速找到第一个只出现一次的字符。

package com.gpl.offer.jianzhi;

import java.util.HashMap;

/**
 * Created by gpl on 2016/8/12.
 */
public class FirstNotRepeatingCharOdString {   //第一个只出现一次的字符

    public int getIndex(String str){
        if(str == null || str.length() == 0)
            return -1;
        char[] chs = str.toCharArray();
        HashMap<Character,Integer> map = new HashMap<Character,Integer>();
        for(char ch:chs){
            if(map.get(ch) != null)
                map.put(ch,map.get(ch)+1);
            else
                map.put(ch,1);
        }
        for(char k:map.keySet()){
            System.out.println("k:"+k+" "+"value:"+map.get(k));
        }
        for(int i=0;i<chs.length;i++){
            if(map.get(chs[i]) == 1)
                return i;
        }

        return -1;
    }


    public static void main(String[] args){
        FirstNotRepeatingCharOdString fnrco = new FirstNotRepeatingCharOdString();
        String s = "aabqbccdeeff";
        System.out.println(fnrco.getIndex(s));
    }

}

剑指Offer面试题35(java版):第一个只出现一次的字符

题目:在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出'b'. 看到这样的题目,我们最直观的想法就是从头开始扫描这个字符串中的字符。当访问某个字符时拿这个字符和后面的每个字...
  • jsqfengbao
  • jsqfengbao
  • 2015年08月09日 16:14
  • 2455

[剑指Offer]面试题35:第一个只出现一次的字符

题目给定一个字符串,求第一个不重复的字符 abbcad -> c解题思路:今天中午面试的时候第二题我的思路是从头开始扫描字符串中的每个字符。当访问到某字符时拿这个字符和后面的每个字符相比较。如果...
  • CodeEmperor
  • CodeEmperor
  • 2016年03月19日 10:23
  • 1252

剑指offer----第一个只出现一次的字符位置----java实现

在一个字符串(1字符串长度,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串,返回-1。位置索引从0开始。 如果从头开始让每一个字符都与其后面的字符相比较,当第一个出现一次的字符,就结束...
  • snow_7
  • snow_7
  • 2016年07月07日 17:32
  • 960

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

在字符串中查找第一个只出现一次的字符。例如输入字符串"abaccdef",输出b,     分析:(1)创建一个数组,并初始化数组,                       (2)遍历字符串,...
  • xulu_258
  • xulu_258
  • 2015年05月26日 20:32
  • 953

第一个只出现一次的字符 java实现

题目描述 在一个字符串(1 分析:由于题目与字符出现的次数相关,我们是不是可以统计每个字符在该字符串中出现的次数,要打到这么目的,我们需要一个数据容器来存储每个字符在字符串中出现的次数,这...
  • qq_23217629
  • qq_23217629
  • 2016年10月09日 13:18
  • 1404

剑指offer_第一个只出现一次的字符

题目描述在一个字符串(1
  • lingongheng
  • lingongheng
  • 2016年10月05日 09:48
  • 765

在一个字符串中找到第一个只出现一次的字符。如输入:abcdab,则输出:c。

题目:在一个字符串中找到第一个只出现一次的字符。如输入:abcdab,则输出:c。 分析:看到这道题时,有两种思路: (1)最直观的想法是从头开始扫描这个字符串中的每个字符。当访问到某字符时...
  • yanxiaolx
  • yanxiaolx
  • 2016年06月02日 22:47
  • 1682

【华为OJ】找出字符串中第一个只出现一次的字符

找出字符串中第一个只出现一次的字符 详细描述: 接口说明 原型: bool FindChar(char* pInputString, char* pChar); 输入参数: char* pInputS...
  • haoxiaodao
  • haoxiaodao
  • 2015年04月20日 20:22
  • 711

在字符串(字母)中找出第一个只出现一次的字母

第一个只出现一次的字符:在字符串中找出第一个只出现一次的字母。函数支持汉字查询,但不知道这个函数在实际应用有什么用。 在编程中发现直接 这样 arr[字符串]是设定对象属性,不是访问数组。var fi...
  • 6rl
  • 6rl
  • 2016年11月01日 15:42
  • 586

【c语言】第一个只出现一次的字符题目:在字符串中找出第一个只出现一次的字符

// 第一个只出现一次的字符题目:在字符串中找出第一个只出现一次的字符。 // 如输入“abaccdeff”,则输出’b’。 #include #include char find...
  • zhaoyaqian552
  • zhaoyaqian552
  • 2015年07月06日 20:45
  • 1540
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【剑指offer】第一个只出现一次的字符
举报原因:
原因补充:

(最多只允许输入30个字)