题目链接:3760. 不同首字母的子字符串数目(中等)
算法原理:
解法:哈希表
23ms击败40.67%
时间复杂度O(N)
思路很简单,就是统计出有多少不同的字母即可,原因👇
题目要求子字符串连续,且子字符串的首字符必须不同才算在计数里,那么在
abcdefghiajklmano这个字符串中“abcde”、“ajklm”、“ano”只需要被统计一次即可,其余字母开头的子字符串同理
Java代码:
class Solution { public int maxDistinct(String ss) { int ret=0; char[] s=ss.toCharArray(); int n=s.length; Set<Character> hash=new HashSet<>(); for(char c:s){ if(!hash.contains(c)){ hash.add(c); ret++; } } return ret; } }