字符串中的第一个惟一字符
题目形容:给定一个字符串,找到它的第一个不反复的字符,并返回它的索引。如果不存在,则返回 -1。
示例阐明请见LeetCode官网。
起源:力扣(LeetCode)
链接:https://leetcode-cn.com/probl...
著作权归领扣网络所有。商业转载请分割官网受权,非商业转载请注明出处。
解法一:遍历字符串
首先,如果s为null或者空字符串,间接返回-1。
如果s的长度只有1,返回索引位0。
当s的长度大于1,申明一个LinkedHashMap用来记录每个字符呈现的次数,而后遍历s的每一个字符,将每一个字符和相应呈现的次数放入LinkedHashMap中。
而后按程序遍历LinkedHashMap,判断是否存在value为1即只呈现过一次的字符,如果存在,返回在s中的索引位。如果遍历完发现不存在,则返回-1。
import java.util.LinkedHashMap;import java.util.Map;public class LeetCode_387 { public static int firstUniqChar(String s) { if (s == null || s.length() == 0) { return -1; } if (s.length() == 1) { return 0; } Map<Character, Integer> charCount = new LinkedHashMap<>(); for (char c : s.toCharArray()) { if (charCount.containsKey(c)) { charCount.put(c, charCount.get(c) + 1); } else { charCount.put(c, 1); } } for (Map.Entry<Character, Integer> characterIntegerEntry : charCount.entrySet()) { if (characterIntegerEntry.getValue() == 1) { return s.indexOf(characterIntegerEntry.getKey()); } } return -1; } public static void main(String[] args) { System.out.println(firstUniqChar("loveleetcode")); }}
【每日寄语】 闪光的未必都是金子,而缄默的也不肯定就是石头。