TechFUL: 文字変化(Easy)
問題概要
英語の小文字からなる長さ の文字列 が与えられる.
Tech ちゃんはこの文字列の 番目 の文字 に対して次の二つの操作を行うことができる.
操作 A : 1 ポイントを使用して、文字 を辞書順に一つ次の文字に変化させる.z の一つ次の文字は a である.
操作 B : 1 ポイントを使用して、文字 を辞書順に一つ前の文字に変化させる.a の一つ前の文字は z である.
文字列 から文字列 に変化させるのに必要な最小ポイントを求めよ.
制約
は英子文字からなる文字列.
解法
文字 を に変化させる方法として、操作 A のみを繰り返すか、操作 B のみを繰り返すかの二通りのみを考えればいい.
の辞書順における番号をそれぞれ とする.
のとき、
操作 A のみを繰り返す場合の操作回数は 回.
操作 B のみを繰り返す場合の操作回数は 回
の場合も同様に求められる.
#include <bits/stdc++.h> using namespace std; int main() { int L; string S, T; cin >> L >> S >> T; int ans = 0; for (int i = 0; i < L; ++i) { if (S[i] > T[i]) swap(S[i], T[i]); ans += min(T[i] - S[i], 26 + S[i] - T[i]); } cout << ans << endl; }