频道栏目
首页 > 资讯 > 其他 > 正文

找出字符串中第一个单独出现的字符

17-11-16        来源:[db:作者]  
收藏   我要投稿

需求:

给出一个字符串。找到字符串中第一个不重复的字符然后返回它的下标。如果不存在这样的字符,返回 -1。

分析:

类似于寻找整型数组中第一个单独出现的数字,对于单独出现的字符或者数字这类问题,可以借助HashMap集合,将数组或者字符串中的字符或者数字及对应的角标存到HashMap中,如果是重复的元素,其对应的value是最后一次出现的角标。遍历数组或者字符串,如果当前被遍历元素的角标和map集合中该元素对应的value相同,说明该元素的单独出现的,直接返回角标即可,如果不相同,那么说明该元素是重复的,需要将map集合中的value值改成该元素的当前角标,继续遍历,如果没有单独出现的字符或数字,就返回-1。

代码:

public class Solution {
    /*
     * @param s: a string
     * @return: it's index
     */
    public int firstUniqChar(String s) {
        // write your code here
        if(s == null || s.length() == 0) {
            return -1;
        }
        
        //创建map集合,遍历字符串,将字符和角标存到map集合中
        HashMap hm = new HashMap();
        
        for(int i = 0; i < s.length(); i++) {
            hm.put(s.charAt(i), i);
        }
        
        //遍历字符串,看当前字符的角标和map集合中该字符对应的value是否相同
        //如果相同,说明就是单独出现的,直接返回该角标
        //如果不同,说明有重复的字符出现,需要修改map集合中该字符对应的value值,继续遍历
        for(int i = 0; i < s.length(); i++) {
            if(i == hm.get(s.charAt(i))) {
                return i;
            }
            
            hm.put(s.charAt(i), i);
        }
        
        return -1;

    }
}
相关TAG标签
上一篇:java语言的主要特性、Java技术体系平台、Java语言的特点
下一篇:Java快速排序算法实例
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站