[LeetCode] NO. 387 First Unique Character in a String

本文介绍了一种简单的方法来找出给定字符串中的第一个非重复字符及其索引位置。通过两次遍历字符串并使用一个长度为26的整数数组作为哈希表来记录每个小写字母的出现次数,实现了高效的查找。

[题目]

Given a string, find the first non-repeating character in it and return it's index. If it doesn't exist, return -1.

Examples:

s = "leetcode"
return 0.

s = "loveleetcode",
return 2.

Note: You may assume the string contain only lowercase letters.

[题目解析] 根据题意,思路比较简单,遍历字符串,用map存储对应字符以及出现次数,再次遍历原字符串,当出现第一个出现一次的字符时,返回对应的index即可,考虑到Note中提示的字符串只考虑小写字母组成的情况,可以用一个26位的数组表示map结构,代码如下。

   public int firstUniqChar(String s) {
        if(null == s || 0 == s.length() ) return -1;
    	int[] hash = new int[26];
    	char[] array = s.toCharArray();
        for(int i = 0; i < array.length; i++){     	
        	int num = array[i] - 'a';
        	hash[num]++;
        }
        for(int i = 0; i < array.length; i++){
        	int num = array[i] - 'a';
        	if(hash[num] == 1){
        		return i;
        	}
        }
        return -1;
   }

  

转载于:https://www.cnblogs.com/zzchit/p/5831617.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值