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;
}
相关推荐
春日见4 分钟前
决策规划控制面经汇总
人工智能·深度学习·算法·机器学习·自动驾驶
Full Stack Developme5 分钟前
Java DFA算法
java·python·算法
fie888914 分钟前
LBP + HOG 特征检测与识别 MATLAB 实现
数据结构·算法·matlab
海天鹰17 分钟前
图片去黑边算法
qt·算法
攻城狮Soar42 分钟前
STL源码解析之list(1)
开发语言·c++
2401_869769591 小时前
内容5 日期类实现
开发语言·c++
xxwl5851 小时前
一个原创题(二)
c++·算法
moeyui7051 小时前
LeetCode 380:Insert Delete GetRandom O(1) 题解和一些延伸
算法·leetcode·职场和发展
三千里1 小时前
路径规划算法-备忘
算法·自动驾驶·动态规划
退休倒计时1 小时前
【每日一题】LeetCode 15. 三数之和 TypeScript
数据结构·算法·leetcode·typescript