字符串中的第一个唯一字符 --java记录

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
在这里插入图片描述
学习完hashmap,利用map,key 为字符,value记录字符个数。 记录完后,遍历拿出第一个key为 1 的 下标。

class Solution {
  public static int firstUniqChar(String s) {
        HashMap<Character,Integer> map = new HashMap<Character,Integer>();
        char [] charStr = s.toCharArray();
        char ctemp;  
        for(int i = 0; i < charStr.length; i++) {
        	ctemp = charStr[i];
        	if(map.containsKey(ctemp)) {
        		int value = map.get(ctemp);  //取map中 ctemp 对应的 value
        		map.put(ctemp,value + 1 );      //更新 value值 
        	}else {
        		map.put(ctemp, 1);
        		
        	}
        }
      //遍历charStr字符串,找在map中value第一个值为1的字符,返回charStr下标
        for(int i = 0 ; i < charStr.length; i++) {
        	if(map.get(charStr[i]) == 1) {
        		return i;
        	}
        	
        }
         
        return -1;
    }
}

利用一维num数组保存字符出现个个数。数组索引下标0-25。 s.charAt[i] -'a’对应0-25下标。

class Solution {
    public static int firstUniqChar(String s) {
        int [] num = new int [26];  // 定义大小为26,保存字符个数
        char [] charStr = s.toCharArray();
        for(int i = 0; i < charStr.length; i++) {
        	 num[charStr[i] - 'a'] ++;    // [字符 - 'a']为字母对应 0-25区间。 用来保存字符出现个数
        }
      
        for(int i = 0 ; i < charStr.length; i++) {
        	if(num[charStr[i] - 'a'] == 1) { //找到字符对应数组中的数据,若找到第一个为1的返回。
        		return i;
        	}
        	
        }
         
        return -1;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值