最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

【A

运维笔记admin49浏览0评论

【A

【A

题意:

一个圆环由字母表组成首尾相接的环,环上有一个指针,最初指向字母a。每次可以顺时针或者逆时针旋转一格。例如,a顺时针旋转到z,逆时针旋转到b。求一个字符串至少要转多少次。

样例输入:

zeus

样例输出:

18

思路:

求解对于一个字母x到另一个字母y是正转还是反转所需转的次数少是本问题的核心。正转和反转的算法与x和y的大小有关,正转的时候直接大的减小的,反转的时候算二者和‘a’的距离之和,然后进行比较。

代码:

#include<iostream>
#include<string>
using namespace std;
int main()
{string str;cin >> str;int len = str.length();char ch = 'a';int sum = 0;for (int i = 0; i < len; i++){int num1 = 0;int num2 = 0;if (str.at(i) > ch){num1 = str.at(i) - ch;//正转num2 = ch - 'a' + 'z' + 1 - str.at(i);//反转}else if (str.at(i) < ch){num1 = 'z' + 1 - ch + str.at(i) - 'a';//正转num2 = ch - str.at(i);//反转}int num = (num1 < num2) ? num1 : num2;sum += num;ch = str.at(i);}cout << sum;return 0;
}
发布评论

评论列表(0)

  1. 暂无评论