AtCoder Beginner Contest 147 B - Palindrome-philia
寒くて布団が恋しい季節です、ねむーです。
今回はAtCoder(https://atcoder.jp/contests/abc147/tasks/abc147_b)にて開催されました、AtCoder Beginner Contest 147 B問題「B - Palindrome-philia」の問題と僕との戦闘記です。
0.はじめに
1.問題文
高八士君は回文が大好きで、回文でない文字列が許せません。高八士君は文字列を 1 回ハグするごとに、文字列から 1 文字を選んで任意の文字に変えることができます。
文字列 S が与えられます。 S を回文にするために必要なハグの最小回数を答えてください。
2.制約
- S は半角英小文字のみから成る文字列
- S の長さは 1 以上 100 以下
3.入力例
- 入力
abcdabc
- 出力
2
4.初見の感想
- 前と後ろから順に比較して、真ん中まで異なる回数を数えます
- 入力の長さが奇数と偶数で真ん中の定義が少し変わります
5.学びポイント
- 例えば文字数が3の時は2個目までは見てほしい訳です
- 小数点の切り上げを行うのでCeling関数を使います
6.コードと簡単な解説
using System; using System.Linq; using System.Collections.Generic; class Program { static void Main(string[] args) { string input = Console.ReadLine(); double half = input.Length/2; half = Math.Ceiling(half); int ans = 0; for (int i = 0; i < half; i++) { if (input[i] != input[input.Length - i - 1]) { ans++; } } Console.WriteLine(ans); } }
7.最後に
実際は小数点切り下げでも問題ないですよ!