题解 | #游游的字母串#

游游的字母串

https://ac.nowcoder.com/acm/problem/255195

using namespace std;
 
int len[26][26];
 
int main(){
    //计算每个字母变成其他字母要多少步,0到25表示的是a到z,len[0][25]表示的就是a到z需要多少步
    for(int i=0;i<26;++i){
        for(int j=0;j<26;++j){
            len[i][j]=min(abs(i-j),26-abs(i-j));//abs(x)计算的是x的绝对值
        }
    }
    //给ans初始化一个题目结果达不到的很大的值
    int ans=1<<30;
    string s;
    cin>>s;
    //最后所有字母相等的时候等于的是哪个字母呢?我们可以不去计算跟考虑,因为只有26个字母
    //我们直接遍历26种情况,取其中最小的就可以了
    for(int i=0;i<26;++i){
        int count=0;
        for(int j=0;j<s.length();++j) count+=len[i][s[j]-'a'];
        if(count<ans) ans=count;
    }
    cout<<ans;
    return 0;
}
全部评论

相关推荐

鱼专:你没有问题,有问题的是java市场,我有实习经历都捞不到实习,走一步看一步吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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