Title description
// 力扣
// 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个
// 单空格。 s 只包含小写字母。
// 牛客
// 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个
// 只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大
// 小写).(从0开始计数)
answer
/ 出现次数记录 /
// 力扣
// 执行用时:37 ms, 在所有 Java 提交中击败了16.73%的用户
// 内存消耗:38.9 MB, 在所有 Java 提交中击败了30.90%的用户
import java.util.HashMap;
class Solution {
public char firstUniqChar(String s) {
char[] strs = s.toCharArray();
// 构建HashMap用于存储
// key:strs中出现的字符,value:字符出现次数
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
for (char str: strs) {
if (!map.containsKey(str))
map.put(str, 1); // 没出现过,置1
else
map.put(str, map.get(str)+1); // 出现过,value+1
}
for (char key: strs) {
if (map.get(key) == 1) // 按照strs的顺序,逐个检查map对应的value
return key; // 第一个出现1的,返回字符
}
return ' ';
}
}
// 牛客
// 运行时间:25ms,超过77.83%用Java提交的代码
// 占用内存:10112KB,超过9.32%用Java提交的代码
import java.util.HashMap;
public class Solution {
public int FirstNotRepeatingChar(String str) {
HashMap<Character, Integer> map = new HashMap<>();
char[] strs = str.toCharArray();
for (char s: strs) {
if (!map.containsKey(s))
map.put(s, 1);
else {
map.put(s, map.get(s) + 1);
}
}
for (int i = 0; i < strs.length; i++) {
if (map.get(strs[i]) == 1)
return i;
}
return -1;
}
}
// 出现状态记录 ///
// 力扣
import java.util.HashMap;
class Solution {
public char firstUniqChar(String s) {
// 将s转为字符组char[] strs
char[] strs = s.toCharArray();
// 构建HashMap用于存储
// key:strs中出现的字符,value:字符是否出现次数小于2次(是则true)
HashMap<Character, Boolean> map = new HashMap<Character, Boolean>();
for (char str: strs) {
if (!map.containsKey(str)) // 如果遍历字符str是第1次出现
map.put(str, true); // 将str对应的value置为true
else
map.put(str, false); // 如果出现次数大于等于2次,false
}
for (char key: strs) {
if (map.get(key)) // 按照strs的顺序,逐个检查map对应的value
return key; // 第一个出现true的,返回字符
}
return ' ';
}
}
// 牛客
// 运行时间:28ms,超过69.39%用Java提交的代码
// 占用内存:10116KB,超过9.24%用Java提交的代码
import java.util.HashMap;
public class Solution {
public int FirstNotRepeatingChar(String str) {
HashMap<Character, Boolean> map = new HashMap<Character, Boolean>();
char[] strs = str.toCharArray();
for (char s: strs) {
if (!map.containsKey(s))
map.put(s, true);
else {
map.put(s, false);
}
}
for (int i = 0; i < strs.length; i++) {
if (map.get(strs[i]))
return i;
}
return -1;
}
}