问题:
在一个字符串(0<=字符串长度<=10000,悉数由字母构成)中找到第一个只涌现一次的字符,并返回它的位置, 假如没有则返回 -1(须要辨别大小写)
相干视频教程引荐:java在线教程
处理思绪:
题目请求很明白,就是遍历字符串,而且给字符计数,计数以后,找到计数为1的字符即可。很明显这须要用到hashmap,key就是字符串中的各个字符,而value就是这个字符在字符串中涌现的次数。
代码以下:
import java.util.LinkedHashMap; public class Solution { public int FirstNotRepeatingChar(String str) { int len = str.length(); LinkedHashMap<Character, Integer> map = new LinkedHashMap<>(); for (int i = 0; i < len; i++) { char c = str.charAt(i); Integer val = map.get(c); map.merge(c, 1, (oldValue, newValue) -> oldValue + newValue); } Character resultKey = null; for (Character c : map.keySet()){ if (map.get(c) == 1){ resultKey = c; break; } } for (int i = 0 ;i < len; i++){ if (str.charAt(i) == resultKey){ return i; } } return -1; } }
相干文章教程引荐:java疾速入门
以上就是java完成查找第一个只涌现一次的字符的细致内容,更多请关注ki4网别的相干文章!