1.题目描述
2.知识点
注1:
String类提供了一个repeat方法,该方法用于将指定的字符串重复指定的次数。
public class Main {
public static void main(String[] args) {
String repeatedString = "abc".repeat(3);
System.out.println(repeatedString); // 输出:abcabcabc
}
}
注2:
HashMap 中的键必须是唯一的,不能重复。
HashMap中添加一个已经存在的键,新的键的值会覆盖原有键的值。
HashMap 中的值是可以重复的。
注3:
map.getOrDefault 是一个 HashMap 方法,它用于获取与指定键关联的值,如果这个键不存在,则返回指定的默认值。
V getOrDefault(Object key, V defaultValue)
key:要在此映射中查找的键。
defaultValue:如果指定键在映射中不存在,则返回的默认值。
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<String, Integer> scores = new HashMap<>();
// 添加学生的成绩
scores.put("Alice", 90);
scores.put("Bob", 85);
scores.put("Charlie", 95);
// 获取学生的成绩
int aliceScore = scores.getOrDefault("Alice", 0);
int davidScore = scores.getOrDefault("David", 0); // David 不在 HashMap 中,返回默认值 0
System.out.println("Alice's score: " + aliceScore); // 输出:Alice's score: 90
System.out.println("David's score: " + davidScore); // 输出:David's score: 0
}
}
,getOrDefault 方法允许我们安全地从 HashMap 中获取值,即使指定的键不存在,也不会抛出 NullPointerException,而是返回一个默认值。
3.代码实现
class Solution {
public int firstUniqChar(String s) {
char[] cs=s.toCharArray();
HashMap<Character,Integer> map=new HashMap<>();
for(int i=0;i<cs.length;i++)
{
char c=cs[i];
map.put(c,map.getOrDefault(c,0)+1);
/*尝试从 map 中获取键 c 对应的值。
如果 c 存在于 map 的键集合中,则返回 c 对应的值;如果 c 不存在于 map 的键集合中,则返回默认值 0。
然后,将获取到的值加 1。*/
}
// 遍历HashMap找到第一个出现次数为1的字符
for(int i=0;i<cs.length;i++)
{
char c=cs[i];
if(map.get(c)==1)
{
return i;
}
}
return -1;
}
}