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;
}
相关推荐
豆沙沙包?36 分钟前
C++~~~vector容器(p31-P40)
开发语言·c++
小小de风呀36 分钟前
de风——【从零开始学习C++】(十八):AVL树——让二叉搜索树自己“站起来“的自平衡黑科技
c++·科技·学习
牛油果子哥q1 小时前
C++STL容器详解:vector/list/string底层扩容、迭代器失效终极解决、容器选型避坑
开发语言·c++·list
welfare9621 小时前
新号别搞:c++类与对象
开发语言·c++
何以解忧,唯有..2 小时前
预订酒店问题
算法
No8g攻城狮2 小时前
【算法】什么是 DFS 与 BFS 及他们的区别
算法·深度优先·宽度优先
举手2 小时前
Epoll模型
linux·c++·学习
zww89491112 小时前
家政派单系统实战指南:从需求分析到智能调度算法落地
算法·需求分析
手写码匠2 小时前
华为云Flexus+DeepSeek征文|Dify 多 Agent 评测实战:用 DeepSeek-R1 当裁判,打造多智能体系统的自动化质量保障体系
人工智能·深度学习·算法·aigc
Shadow(⊙o⊙)2 小时前
Linux网络部分——TCP服务端、客户端架构分析多进程、多线程、线程池
c++·tcp/ip·架构