免费网页申请,厦门seo代理商,淘宝店铺如何推广,电子商务网站设计与实现论文我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符#xff0c;并返回唯一字符的个数。
例如#xff1a;s LEETCODE #xff0c;则其中 L, T,C,O,D 都是唯一字符#xff0c;…我们定义了一个函数 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
思路一模拟题意
c解法
class Solution {
public:int uniqueLetterString(string s) {int ans 0, total 0, last0[26], last1[26];memset(last0, -1, sizeof(last0));memset(last1, -1, sizeof(last1));for (int i 0; i s.length(); i) {char c s[i] - A;total i - 2 * last0[c] last1[c];ans total;last1[c] last0[c];last0[c] i;}return ans;}
};
分析
根据题意将原字符串从前向后遍历的过程中后一个字符对前子串需判断是否有影响本题利用两个数组记录字符是否重复每当遍历到下一个字符时对结果加上i-1位置的结果减去2*上一次该字符出现的位置上上一次的位置当前位置i接着更新两个数组最后返回结果即可
总结
本题模拟题意解决即可也可利用动态规划等思路解决