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;
}
相关推荐
CV爱数码5 分钟前
论文精读|Learned Primal-Dual:把原始–对偶算法展开成网络
图像处理·算法·计算机视觉·ct·重建·断层扫描
yuniko-n20 分钟前
【算法】约瑟夫环问题
java·算法
syagain_zsx38 分钟前
jsoncpp 使用指南:编译链接、Json::Value 取值与高频坑
c++·json·库·http格式
l1t44 分钟前
测试DuckDB v2.1.0-alpha49002的bignum乘法
数据库·sql·算法·duckdb
Nil2081 小时前
LeetCode 283移动零
数据结构·算法·leetcode
CQU_JIAKE1 小时前
10.18【A】
算法
LMT流氓兔1 小时前
第五单元——第4课:给工具参数加校验
java·前端·算法·ai·langchain
布莱克6052 小时前
理解 = delete 与 = default:两种赋值语义的差异
c++
物联网软硬件开发-轨物科技2 小时前
【轨物方案】深度解读开关柜智能感知及一键顺控专家系统
大数据·运维·网络·人工智能·算法·机器人
小小、码农2 小时前
[特殊字符]【C++11】类的新功能全面解析:移动构造、移动赋值、default、delete、final 与 override
linux·开发语言·网络·c++