HJ168 小红的字符串

  • 题目
  • 题解(32)
  • 讨论(19)
  • 排行

简单 通过率:50.12% 时间限制:1秒 空间限制:256M

知识点贪心

校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。

描述

小红拥有一个长度为 nn 的小写字母字符串 ss。她可以重复执行如下操作任意次:

∙ ∙ 选择一个下标 i (1≦i≦n)i (1≦i≦n),将字符 sisi​ 循环右移到字母表中的下一个字母。特别地,``zz`` 右移后变成 ``aa``。

请计算,使 ss 变为回文串 所需的最少操作次数。

【名词解释】回文串:一个字符串从左往右与从右往左读完全相同。

输入描述:

一行输入一个长度不超过 10001000 的小写字母字符串 ss。

输出描述:

          在一行上输出一个整数,代表把 ss 变成回文串的最少操作次数。

示例1

输入:

复制代码
abcd

复制输出:

复制代码
4

复制说明:

复制代码
一种可行方案:"abcd"→"dccd""abcd"→"dccd"(共 44 次操作)。

示例2

输入:

复制代码
nuhhhh

复制输出:

复制代码
19
cpp 复制代码
#include <iostream>
#include <string>
#include <cmath>
#include <algorithm>

using namespace std;

int main() {
    string s;
    cin >> s;
    
    long long total_ops = 0;
    int left = 0;
    int right = s.length() - 1;
    
    while (left < right) {
        int pos1 = s[left] - 'a';
        int pos2 = s[right] - 'a';
        
        int diff = abs(pos1 - pos2);
        total_ops += min(diff, 26 - diff);
        
        left++;
        right--;
    }
    
    cout << total_ops << endl;
    
    return 0;
}
相关推荐
码匠许师傅3 分钟前
【C++三方组件】Asio 上篇:回调式 TCP 客户端与服务端
开发语言·c++·tcp/ip
沐欣工作室_lvyiyi8 分钟前
家庭水资源节能系统设计(论文+源码)
c++·python·云平台·单片机毕业设计·单片机仿真·电子信息工程毕业设计·机械电子工程
yi01123 分钟前
LeetCode 134 加油站:从 双循环暴力 演变到 贪心
linux·算法·leetcode
Yyyyyy~24 分钟前
[c++]数组
c++
知识分享小能手31 分钟前
C++ 学习教程,从入门到精通,C++内存模型和名称空间 — 详细知识点总结(9)
开发语言·c++·学习
sogw-三叶草️35 分钟前
LeetCode 989. 数组形式的整数加法
数据结构·算法
2601_9622186139 分钟前
c++中多重继承与虚继承的实现
开发语言·c++
沫璃染墨1 小时前
《Qt从零入门系列(十一):Qt事件机制详解——从QEvent到鼠标、键盘与定时器事件》
c++·qt·ui·硬件工程·交互·个人开发·qt5
维克兜率天1 小时前
【维克】均值回归:跌多了会涨,涨多了会跌
开发语言·笔记·python·算法·均值算法·回归·量化
2601_962218611 小时前
C++中分配器allocator的实现
开发语言·c++