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

来源:互联网 发布:抖音 网络视听许可证 编辑:程序博客网 时间:2024/06/12 00:48

需求:

给出一个字符串。找到字符串中第一个不重复的字符然后返回它的下标。如果不存在这样的字符,返回 -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<Character, Integer> hm = new HashMap<Character, Integer>();                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;    }}


阅读全文
0 0
原创粉丝点击