NC179. 长度为 K 的重复字符子串
描述
示例1
输入:
"createfunonyoka",4
输出:
4
示例2
输入:
"yokagames",3
输出:
1
示例3
输入:
"yoka",4
输出:
0
C++ 解法, 执行用时: 2ms, 内存消耗: 388KB, 提交时间: 2021-09-27
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param k int整型 * @return int整型 */ int numKLenSubstrRepeats(string s, int k) { // write code here int lens = s.length(); int count = 0; for(int i=0; i<lens-k+1; ++i){ for(int j=i+1; j<i+k; ++j){ if(s[j]==s[i]){ count++; } } } return count; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 388KB, 提交时间: 2021-09-15
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param k int整型 * @return int整型 */ int numKLenSubstrRepeats(string s, int k) { // write code here int n = s.size(); int ans = 0; for(int i = 0;i<n && i+k-1<n;i++){ set<char>info; for(int j = i;j<i+k;j++){ if(info.count(s[j])){ ans++; break; }else{ info.insert(s[j]); } } } return ans; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 388KB, 提交时间: 2021-09-13
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param k int整型 * @return int整型 */ int numKLenSubstrRepeats(string s, int k) { int n = s.length(), result = 0; unordered_map<char, int> hashmap; for(int i = 0; i < n; i++){ if(hashmap.find(s[i]) == hashmap.end()) hashmap.emplace(s[i],i); else{ if(i - hashmap[s[i]] < k) result += 1; hashmap[s[i]] = i; } } return result; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 392KB, 提交时间: 2021-09-10
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param k int整型 * @return int整型 */ int numKLenSubstrRepeats(string s, int k) { // write code here int i = 0; int star = 0; int num = 0; int flag = 0; while(s[star+k-1]) { flag = 0; for(i=1;i<=k;i++) { if(s[star] == s[star+i]) flag = 1; } if(flag) num++; star++; } return num; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 392KB, 提交时间: 2021-09-09
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param k int整型 * @return int整型 */ int numKLenSubstrRepeats(string s, int k) { // write code here int res = 0; vector<char> str; if(s.size() < k) return res; for(int i=0; i<=s.size()-k; i++){ for(int j=i; j<i+k; j++){ char t = s[j]; if(find(str.begin(), str.end(),t) != str.end()){ res++; break; } else{ str.push_back(t); } } str.clear(); } return res; } };