题解 | 牛牛喜欢字符串

牛牛喜欢字符串

https://www.nowcoder.com/practice/2db5f4ee8a924dc4abefafa69c8105d5

解题思路:这道题目目的是让字串相同,且要求操作次数最少,也就是对每个子串相同位置进行修改,而想要修改次数最少,我们肯定选择出现次数最大的字符作为目标字符,代码实现如下,先分割统计每个子串同一位置的字母数量,由于子串有n/k个,所以ans直接相加不同的个数即可

#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
    int n , k ; cin >> n >> k ; 
    string s  ; cin >> s ; 
    vector<unordered_map<int , int>>arr(k) ; 
    s = " " + s ; 
    for(int i = 1 ; i <= n ; i++)
    {
        int num = s[i] - 'a' ; 
        arr[i % k][num]++ ; 
    }
    int c = n / k ; 
    int ans = 0 ; 
    for(int i = 0 ; i < k ; i++)
    {
        int maxi = 0 ; 
        for(auto [num , cnt] : arr[i])
        {
            maxi = max(maxi  , cnt) ; 
        }
        ans = ans + c - maxi ; 
    }
    cout << ans << endl ; 
    return 0 ; 
}

全部评论

相关推荐

在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务