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;
}
相关推荐
To_OC2 小时前
LC 51 N 皇后:我以为难的是回溯,结果栽在了对角线下标
javascript·算法·leetcode
2401_841495642 小时前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
fqbqrr3 小时前
2607C++,soui与安卓
c++·soui
fqbqrr6 小时前
2607C++,使用微软detours勾挂工具
c++
爱刷碗的苏泓舒6 小时前
PPP-AR 中的参考星选取:数学原理、评价指标与切换处理
算法·gnss·模糊度固定·ppp-ar·星间单差·参考星·卫星端偏差
蓝悦无人机9 小时前
C++基础 — 函数总结
开发语言·c++
烬羽9 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题
javascript·深度学习·算法
闪电悠米9 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
星空露珠10 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua