首页 > 其他 > 详细

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

时间:2021-08-30 13:58:11      阅读:16      评论:0      收藏:0      [点我收藏+]

原题链接


描述

在一个字符串(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;
}

思路二

用 HashMap存储每一个字符。


解答二

import java.util.HashMap;

public class Solution {
    public int FirstNotRepeatingChar(String str) {
        HashMap<Character, Boolean> hashMap = new HashMap<>();
        char[] chars = str.toCharArray();
        for (char c : chars) {
            hashMap.put(c, hashMap.containsKey(c));
        }
        for (int i = 0; i < chars.length; i++) {
            if (!hashMap.get(chars[i])) return i;
        }
        return -1;
    }
}

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

原文:https://www.cnblogs.com/klaus08/p/15203072.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!