和我一起迎接明天的太阳吧

klaus08

焦虑源于行动的匮乏

JZ34 第一个只出现一次的字符位置

原题链接

描述

在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)

示例1

输入:"google"
返回值:4

思路

还没有学到map,所以用数组模拟,str中的字符做key,数组中的值做value,一边遍历后统计字符,然后再根据str中字符的顺序依次遍历,value为1的就是要的结果。当时这里没想明白,总是想用数组下标进行遍历,但这样就没办法满足题设中第一个的要求,卡了很久。

解答

public static int FirstNotRepeatingChar(String str) {
    int[] map = new int[128];
    for (int i=0;i<str.length();i++)
        ++map[str.charAt(i)];
    for (int i=0; i<str.length(); ++i) {
        if (map[str.charAt(i)] == 1)
            return i;
    }
    return -1;
}
posted @ 2021-07-10 19:25  klaus08  阅读(32)  评论(0编辑  收藏  举报