【问题标题】:I am writing a code for CodeChef. but getting error TLE is it possible to optimize it more?我正在为 CodeChef 编写代码。但是出现错误 TLE 是否可以对其进行更多优化?
【发布时间】:2019-08-30 08:44:30
【问题描述】:

我正在为 CodeChef 编写代码。但是出现错误 TLE (2.10000) 是否可以对其进行更多优化?

问题链接: https://www.codechef.com/APRIL19B/problems/STRCH

代码:

/* package codechef; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Codechef
{
    public static void main (String[] args) throws java.lang.Exception
    {
         Scanner ss = new Scanner(System.in);
         int  T = ss.nextInt();

             for(int k=0;k<T;k++){

                         int counter=0;
                         int N=ss.nextInt();
                         String S=ss.next();
                         char c=ss.next().charAt(0);
                         int sLengthOne=S.lastIndexOf(c);
                         int sLengthTwo=S.length();
                         if(S.length()==N){
                                 for (int i = 0; i <= sLengthOne; i++) {
                                    for (int j = 1; j <= sLengthTwo-i; j++) {
                                        if(S.substring(i,i+j).indexOf(c)!=-1){
                                            counter++;
                                        }
                                    }
                                }
                         System.out.println(counter);
                         }
         }

    }
}

【问题讨论】:

  • 优化是当它起作用时你必须做的,并且你想改进它。您首先需要做的是修复它。您隐藏异常有什么特别的原因吗?
  • 你问的是 try and catch 对吗?为什么我用?
  • 除非我使用 try and catch 它不允许我提交代码,不知道为什么
  • 不,我在问你为什么允许你的代码崩溃而你却没有注意到它崩溃了,更不用说为什么了
  • 对不起,我没明白你的意思

标签: java optimization


【解决方案1】:

您当前的代码在 O(n * n) 中运行,您需要使其为 O(n)。这个想法只是检查您需要的字母在哪些位置,并使用一些数学来计算包含该字母的子字符串的数量。您还需要考虑避免计算重叠的策略。

【讨论】:

  • 可以,但没有办法
  • 我有计算子串的公式 ... N(N+1)/2 但不知道如何数学计算字符的存在
  • @V_for_Vj 认为给定字符串的索引,有多少子字符串包含该索引
猜你喜欢
  • 2019-08-29
  • 1970-01-01
  • 1970-01-01
  • 2020-11-24
  • 1970-01-01
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多