每日一题-Day04-查找字符串中首次且只出现一次的字符

题目描述

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

解题思路

这道题涉及哈希表的思想,我们可以创建一个哈希表,将字符串中出现的字母保存为键值,利用for循环遍历字符串,将重复出现的字母的value值+1,此时可以得到每个字母出现的次数,再通过一个for循环查找最先出现的value值为1的键值,即可得到答案

import java.util.HashMap;
import java.util.Scanner;
//查找字符串中首次且只出现一次的字符
public class Test05 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        if (s==null || s.length()==0){
            System.out.println("错误");                   //判断字符串是否为空
        }
        HashMap<Character,Integer> map =new HashMap<>();  //创建一个新的哈希表
        for(int i = 0; i < s.length();i++){               //遍历字符串,记下每个字符出现的次数
            if(!map.keySet().contains(s.charAt(i))){
                map.put(s.charAt(i),1);
            }else{
                map.put(s.charAt(i),map.get(s.charAt(i))+1);
            }
        }
        for(int j =0; j< s.length();j++){                 //查看每个字母出现的次数
            if(map.get(s.charAt(j))==1){
                System.out.println("结果为:"+s.charAt(j));
            }
        }
        sc.close();

    }
}

题目来自牛客网

参考答案来自:一颗闪闪发亮的马路星

知识点

HashMap

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。

部分语法

创建一个字符和整数类型的哈希表

HashMap<Character,Integer> map =new HashMap<>();

插入键值对

map.set(key,value)

获取value值

map.get(key)

判断该键值是否存在

map.contains()

具体使用方法参考菜鸟教程 HashMap

posted @ 2021-02-05 10:52  2月2日  阅读(201)  评论(0)    收藏  举报