James找到了他的朋友Harry要给女朋友的情书。James很爱恶作剧,所以他决定要胡搞一下。他把信中的每个单字都变成了回文。对任何给定的字符串,他可以减少其中任何一个字符的值,例如‘d‘可以变成‘c‘,这算是一次操作。(另外,他最多只能将字符的值减少至‘a‘,‘a‘不能再被减少成‘z‘)。找出将给定字符串转换成回文所需的最少操作次数。
输入格式
第一行包含整数 T 代表测试数据的组数。
接着 T 行各包含一个字符串。
输出格式
每个测试数据各输出一行,代表此数据需要的最少操作次数。
取值范围
1 ≤ T ≤ 10
1 ≤ 字符串长度 ≤ 104
题解:很简单的题,开始居然还想DFS=。=
要把某个字符串变成回文,就要把i和L-i上的字符变成一样的,所以只要计算所有的abs(s[i]-s[L-i])的和就可以了。
1 import java.io.*; 2 import java.util.*; 3 import java.text.*; 4 import java.math.*; 5 import java.util.regex.*; 6 7 public class Solution { 8 static int The_Love_Letter_Mystery(String s){ 9 int sum = 0; 10 if(s.length() <= 1) 11 return 0; 12 int start = 0; 13 int end = s.length()-1; 14 while(start<end){ 15 sum += Math.abs(s.charAt(start) - s.charAt(end)); 16 start++; 17 end--; 18 } 19 return sum; 20 } 21 22 23 public static void main(String[] args) { 24 Scanner in = new Scanner(System.in); 25 int t = in.nextInt(); 26 for(int i = 0;i < t;i++){ 27 String string = in.next(); 28 System.out.println(The_Love_Letter_Mystery(string)); 29 } 30 31 32 } 33 }
【HackerRank】The Love-Letter Mystery
时间: 2024-10-03 06:33:36