Java hackerrank中的计时问题;《情书之谜》;问题

Java hackerrank中的计时问题;《情书之谜》;问题,java,Java,我正在解决“情书之谜”的问题,也许我的逻辑是正确的,但它显示了问题的时间问题 .我的解决方案如下所示。它包含两个函数,一个是lovelettesurgist(String s),返回求和最小步数;另一个是conversionCount(String s,int i,int j),返回intcharacterCount变量。它对所有最小步数求和以返回值 import java.io.*; import java.math.*; import java.security.*; import java

我正在解决“情书之谜”的问题,也许我的逻辑是正确的,但它显示了问题的时间问题 .我的解决方案如下所示。它包含两个函数,一个是lovelettesurgist(String s),返回求和最小步数;另一个是conversionCount(String s,int i,int j),返回intcharacterCount变量。它对所有最小步数求和以返回值

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;

public class Solution {

    // Complete the theLoveLetterMystery function below.
    static int theLoveLetterMystery(String s) {
        int startCounter=0,endCounter=(s.length()-1),sum_minimum_Steps=0;
        // s.charAt(startCounter)!=s.charAt(endCounter)
        while(startCounter!=endCounter)
        {
            if(s.charAt(startCounter)!=s.charAt(endCounter))
            {
                //minimun steps function executes
                sum_minimum_Steps+=conversionCount(s,startCounter,endCounter);
            }else{
                startCounter++;
                endCounter--;
            }
        }
        return sum_minimum_Steps;
    }
    static int conversionCount(String s,int i,int j) {
        int charStartAscii=(int)s.charAt(i);
        int charEndAscii=(int)s.charAt(j);
        int characterCount=0;
        while(charStartAscii!=charEndAscii)
        {
        charEndAscii--;
        characterCount++;
        }
        return characterCount;
    }    
    private static final Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) throws IOException {
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

        int q = scanner.nextInt();
        scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");

        for (int qItr = 0; qItr < q; qItr++) {
            String s = scanner.nextLine();

            int result = theLoveLetterMystery(s);

            bufferedWriter.write(String.valueOf(result));
            bufferedWriter.newLine();
        }

        bufferedWriter.close();

        scanner.close();
    }
}
import java.io.*;
导入java.math.*;
导入java.security.*;
导入java.text.*;
导入java.util.*;
导入java.util.concurrent.*;
导入java.util.regex.*;
公共类解决方案{
//完成下面的Lovelett神秘功能。
静态整型LoveLetter谜(字符串s){
int startCounter=0,endCounter=(s.length()-1),sum\u minimum\u Steps=0;
//s.charAt(开始计数器)!=s.charAt(结束计数器)
while(开始计数器!=结束计数器)
{
如果(s.charAt(开始计数器)!=s.charAt(结束计数器))
{
//执行最小步数函数
总和最小步数+=转换计数(s、起始计数器、结束计数器);
}否则{
startCounter++;
结束计数器--;
}
}
返回和最小步数;
}
静态整数转换计数(字符串s、整数i、整数j){
int charStartAscii=(int)s.charAt(i);
int charEndAscii=(int)s.charAt(j);
int characterCount=0;
while(charStartAscii!=charEndAscii)
{
charEndAscii--;
characterCount++;
}
返回字符计数;
}    
专用静态最终扫描仪=新扫描仪(System.in);
公共静态void main(字符串[]args)引发IOException{
BufferedWriter BufferedWriter=new BufferedWriter(newfilewriter(System.getenv(“OUTPUT_PATH”));
int q=scanner.nextInt();
scanner.skip(“(\r\n |[\n\r\u2028\u2029\u0085])”;
for(int-qItr=0;qItr
从假设我们正在研究26个字母(范围a-z)的字母表开始,“情书之谜”问题是关于找到由字母值1递减(例如d->c,不包括字母a)组成的最小操作数,以将字符串转换为回文字符串。这可以通过将位于位置i和n-i-1的字符之间的绝对int差相加得到,其中n是字符串的长度,并在字符串的一半上迭代。代码如下:

public static int conversionCount(String s) {
    char[] arr = s.toCharArray();
    int length = s.length();

    int count = 0;
    for (int i = 0; i < length / 2; ++i) {
            count += Math.abs((int) (arr[i] - arr[length - i - 1]));
    }
    return count;
}
public static int conversionCount(字符串s){
char[]arr=s.toCharArray();
int length=s.length();
整数计数=0;
对于(int i=0;i
注意:我在hackerrank中测试了它,通过了所有测试。

函数lovelettersummary($s){
function theLoveLetterMystery($s) {
    $s = strtoupper($s);
    $alpha = array('A','B','C','D','E','F','G','H','I','J','K', 'L','M','N','O','P','Q','R','S','T','U','V','W','X ','Y','Z');
$alpha_flip = array_flip($alpha);
    // Write your code here
        $i = 0;
        $j = strlen($s)-1;
        $sol = 0;
        while($i<$j){
             $sol += abs($alpha_flip[$s[$i]]-$alpha_flip[$s[$j]]);
            ++$i;
            --$j;
        }
        return $sol;

}
echo theLoveLetterMystery('abbc')// return 2
$s=标准上限($s); $alpha=数组('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); $alpha_flip=数组_flip($alpha); //在这里编写代码 $i=0; $j=strlen($s)-1; $sol=0;
然而,该问题缺少约束条件。