当前位置: 首页 > article >正文

每日OJ_牛客_游游的字母串_枚举_C++_Java

目录

牛客_游游的字母串_枚举

题目解析

C++代码

Java代码


牛客_游游的字母串_枚举

游游的字母串

描述:

对于一个小写字母而言,游游可以通过一次操作把这个字母变成相邻的字母。'a'和'b'相邻,'b'和'c'相邻,以此类推。特殊的,'a'和'z'也是相邻的。可以认为,小写字母的相邻规则为一个环。

游游拿到了一个仅包含小写字母的字符串,她想知道,使得所有字母都相等至少要多少次操作?

输入描述:

一个仅包含小写字母,长度不超过100000的字符串。

输出描述:

一个整数,代表最小的操作次数。


题目解析

        英文字母一共就26个,因此可以直接暴力枚举以每个字母作为最后的转变字母。最后去最小值即可。

C++代码

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    string str;
    cin >> str;
    int res = 1e9;
    for(char ch = 'a'; ch <= 'z'; ++ch)
    {
        int cnt = 0;
        for(auto e : str)
        {
            cnt += min(abs(e - ch), 26 - abs(e - ch));
        }
        res = min(res, cnt);
    }
    cout << res << endl;
    return 0;
}

Java代码

import java.util.*;
public class Main
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        char[] s = in.next().toCharArray();

        int ret = (int)1e9;
        for(char ch = 'a'; ch <= 'z'; ch++)
        {
            int sum = 0;
            for(int i = 0; i < s.length; i++)
            {
                sum += Math.min(Math.abs(s[i] - ch), 26 - Math.abs(s[i] - ch));
            }
            ret = Math.min(ret, sum);
        }

        System.out.println(ret);
    }
}

http://www.kler.cn/a/571530.html

相关文章:

  • 高效卸载神器:深度体验分享
  • 探秘基带算法:从原理到5G时代的通信变革【三】Turbo 编解码
  • 【OpenCV C++】以时间命名存图,自动检查存储目录,若不存在自动创建, 按下空格、回车、Q、S自动存图
  • 爬虫逆向实战小记——解决webpack实记
  • 【借助 DeepSeek 之力:自动化 Web 渗透测试脚本编写与实战】
  • 大模型学习笔记------Llama 3模型架构简介
  • Python--面向对象高级(上)
  • Pycharm(四):集合的操作
  • leetcode242 哈希表
  • 设计模式说明
  • 10款常用的FTP传输客户端工具:选择与使用指南
  • Redis 实现延迟队列的方案
  • Dijkstra最短路算法详解与蓝桥杯/ACM真题实战
  • 复古半色调褶皱划痕y2k照片效果ps特效滤镜样机 Folded Retrofuturistic Comics Risograph Effect
  • 江协科技/江科大-51单片机入门教程——P[2-2] LED闪烁P[2-3] LED流水灯
  • 【零基础到精通Java合集】第二十集:Java内存模型-堆、栈、方法区
  • Day1
  • 国产免费AI的IDE-TRAE
  • 【量化科普】Beta,贝塔系数
  • 开心消消乐