• 剑指offer系列60---第一个只出现一次的字符


    【题目】在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。
    * 若为空串,返回-1。位置索引从0开始
    * 【思路】1 首先遍历字符串数组,添加字符和对应出现的次数,可以用HashMap(字符,对应出现的次数)来实现。
    * 2 再遍历数组,当遍历到字符出现次数为1的时候,输出。

     1 package com.exe11.offer;
     2 import java.util.HashMap;
     3 import java.util.Map;
     4 /**
     5  * 【题目】在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。
     6  *             若为空串,返回-1。位置索引从0开始
     7  * 【思路】1 首先遍历字符串数组,添加字符和对应出现的次数,可以用HashMap(字符,对应出现的次数)来实现。
     8  *           2 再遍历数组,当遍历到字符出现次数为1的时候,输出。
     9  * @author WGS
    10  *
    11  */
    12 
    13 public class FirstNoRepeatingChar {
    14 
    15     
    16     public char firstNoRepeatingChar(String str){
    17         if(str==null ||str.equals(""))
    18             return ' ';
    19         char[] ch=str.toCharArray();
    20         Map<Character,Integer> map=new HashMap<Character,Integer>();
    21         //1 遍历数组,添加字符串每个字符及字符对应的次数。首次出现设置次数为1,如果有就在原有次数上+1
    22         for(char c:ch){
    23             if(map.get(c)!=null){//map.get(c):看集合中字符(key)对应的次数(value)是否为0(null)
    24                 map.put(c, map.get(c)+1);//map.get(c)+1:字符c对应的次数不为0,即字符串中已有字符c,就在原有次数上+1
    25             }else{
    26                 map.put(c, 1);//如果集合中没有c字符,就为第一次添加,次数设置为1
    27             }
    28         }
    29         //2 重新遍历数组,获取第一个次数为1 的字符
    30         for(int i=0;i<ch.length;i++){
    31             if(map.get(ch[i])==1)
    32                 return ch[i];//    返回首次出现的字符        
    33         }
    34         return 0;
    35         
    36     }
    37     public static void main(String[] args) {
    38         FirstNoRepeatingChar f=new FirstNoRepeatingChar();
    39         //String str="abcdef";
    40         //String str="abacdef";
    41         //String str="abcdefabf";
    42         String str="aabb";
    43         char c=f.firstNoRepeatingChar(str);
    44         System.out.println(c);
    45         
    46 
    47     }
    48 
    49 }
  • 相关阅读:
    数据结构之链表
    非常好的Java反射例子
    return和finally的执行和联系
    struts2中的OGNL详解
    解耦与耦合的你我他
    struts2案例
    《使用Hibernate开发租房系统》内部测试笔试题
    一对多双向关联关系
    Oracle基本数据类型
    transactionManager的type与dataSource的type
  • 原文地址:https://www.cnblogs.com/noaman/p/5652446.html
Copyright © 2020-2023  润新知