2023每日刷题(四十一)
Leetcode—828.统计子串中的唯一字符
算法思想
枚举所有种类字母在s中出现的位置,分别统计只包含这个字母不包含该类字母中其他字母的子串个数
实现代码
int uniqueLetterString(char* s) {int len = strlen(s);char c;int ans = 0;int i = 0;for(c = 'A'; c <= 'Z'; c++) {int last0 = -1, last1 = -1;for(i = 0; i < len; i++) {if(s[i] == c) {last1 = last0;last0 = i;}ans += last0 - last1;}}return ans;
}
运行结果
优化版算法思想
参考灵神题解
实现代码
int uniqueLetterString(char* s) {int last0[26], last1[26];int ans = 0;int total = 0;int n = strlen(s);memset(last0, -1, sizeof(last0));memset(last1, -1, sizeof(last1));for(int i = 0; i < n; i++) {int c = s[i] - 'A';total += i - 2 * last0[c] + last1[c];ans += total;last1[c] = last0[c];last0[c] = i;}return ans;
}
运行结果
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!