四川住房建设厅网站首页建设网点查询
四川住房建设厅网站首页,建设网点查询,以网络营销为导向的网站建设应注意什么问题,wordpress批量修改字体大小3妹#xff1a;“太阳当空照#xff0c;花儿对我笑#xff0c;小鸟说早早早#xff0c;你为什么背上炸药包” 2哥 :3妹#xff0c;什么事呀这么开发。 3妹#xff1a;2哥你看今天的天气多好啊#xff0c;阳光明媚、万里无云、秋高气爽#xff0c;适合秋游。 2哥#x…
3妹“太阳当空照花儿对我笑小鸟说早早早你为什么背上炸药包” 2哥 :3妹什么事呀这么开发。 3妹2哥你看今天的天气多好啊阳光明媚、万里无云、秋高气爽适合秋游。 2哥是啊立冬之后天气多以多云为主好不容易艳阳高照。可是你不能秋游赶紧收拾收拾上班去啦 3妹哼 好吧~ 2哥给你出了一道题发你微信里了 上班通勤的路上记得看一下回来问你答案~ 3妹知道啦难不倒我
题目
我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符并返回唯一字符的个数。
例如s “LEETCODE” 则其中 “L”, “T”,“C”,“O”,“D” 都是唯一字符因为它们只出现一次所以 countUniqueChars(s) 5 。
本题将会给你一个字符串 s 我们需要返回 countUniqueChars(t) 的总和其中 t 是 s 的子字符串。输入用例保证返回值为 32 位整数。
注意某些子字符串可能是重复的但你统计时也必须算上这些重复的子字符串也就是说你必须统计 s 的所有子字符串中的唯一字符。
示例 1
输入: s “ABC” 输出: 10 解释: 所有可能的子串为“A”,“B”,“C”,“AB”,“BC” 和 “ABC”。 其中每一个子串都由独特字符构成。 所以其长度总和为1 1 1 2 2 3 10 示例 2
输入: s “ABA” 输出: 8 解释: 除了 countUniqueChars(“ABA”) 1 之外其余与示例 1 相同。 示例 3
输入s “LEETCODE” 输出92
提示
1 s.length 105 s 只包含大写英文字符
思路 分别计算每个字符的贡献,
对于下标为 i 的字符 ci当它在某个子字符串中仅出现一次时它会对这个子字符串统计唯一字符时有贡献。只需对每个字符计算有多少子字符串仅包含该字符一次即可。对于 ci 记同字符上一次出现的位置为 cj 下一次出现的位置为 ck那么这样的子字符串就一共有 (ci−cj)×(ck−ci)种即子字符串的起始位置有 cj不含到 ci含之间这 (ci−cj)种可能到结束位置有 (ck−ci)种可能。可以预处理 sss将相同字符的下标放入数组中方便计算。最后对所有字符进行这种计算即可。
java代码
class Solution {public int uniqueLetterString(String s) {MapCharacter, ListInteger index new HashMapCharacter, ListInteger();for (int i 0; i s.length(); i) {char c s.charAt(i);if (!index.containsKey(c)) {index.put(c, new ArrayListInteger());index.get(c).add(-1);}index.get(c).add(i);}int res 0;for (Map.EntryCharacter, ListInteger entry : index.entrySet()) {ListInteger arr entry.getValue();arr.add(s.length());for (int i 1; i arr.size() - 1; i) {res (arr.get(i) - arr.get(i - 1)) * (arr.get(i 1) - arr.get(i));}}return res;}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/87870.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!