每日一题:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)
来源:2020年11月11日,小鱼易连一面,算法第一题
一、解题思路
一、首先要知道两个方法:
- String类的charAt() 方法用于返回指定索引处的字符。
- 集合类中的Map.get() 方法返回指定键所映射的值。如果此映射不包含该键的映射关系,则返回 null。
二、解题思路
- 定义一个Map集合,键用来存储字符,值用来存储存字符出现的次数。
- 使用for循环,利用 charAt() 方法返回指定索引处的字符,将值存入键中。
- 利用 Map.get() 方法返回指定键所映射的值。
- 如果值不为null,说明以前出现过,+1进行区分
- 如果值为null,说明没出现过,将1存入,用于后面进行判断
- 为了找出第一个出现次数为1的字符,遍历原字符串
- 第一个次数为1的字符,为要找的值
二、实现代码
import java.util.HashMap;
/*
* 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,
* 并返回它的位置, 如果没有则返回 -1(需要区分大小写).*/
public class Test1 {
public static void main