Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的Java代码超出了时间限制,而C/C++/Python/Python3正在被更大的测试用例所接受_Java_Python_C - Fatal编程技术网

我的Java代码超出了时间限制,而C/C++/Python/Python3正在被更大的测试用例所接受

我的Java代码超出了时间限制,而C/C++/Python/Python3正在被更大的测试用例所接受,java,python,c,Java,Python,C,限制条件: 0<T<100 0<N<10000 输出: bdfeca bca 我花了很多时间试图解决这个问题,但我受够了我所犯的错误 P>我知道C,C++是更快的,因为它们只使用编译器,与java,python相比,因为它们也使用解释器, 但是我的代码对Python2和Python3做得很好 他们的逻辑是否比这更能降低时间复杂度 我想我已经在O(n)中完成了,时间复杂性 我的Java代码:(超过了我的代码的时间限制) 限制: 时间限制:每个输入文件0.15秒。 内

限制条件:

0<T<100
0<N<10000
输出:

bdfeca 
bca
我花了很多时间试图解决这个问题,但我受够了我所犯的错误

<> P>我知道C,C++是更快的,因为它们只使用编译器,与java,python相比,因为它们也使用解释器,

但是我的代码对Python2和Python3做得很好

他们的逻辑是否比这更能降低时间复杂度

我想我已经在O(n)中完成了,时间复杂性

我的Java代码:(超过了我的代码的时间限制)

限制:
时间限制:每个输入文件0.15秒。
内存限制:256 MB

源代码限制:1024KB

我犯了一个错误,我的Java代码速度变慢了

i、 例如,在
System.out.println(a.charAt(i))

因此,为了将其最小化,我们使用StringBuilders并对其进行更新,最后在最终打印

这样我们可以说,
公共字符(int-index)
方法比
公共字符串子字符串(int-beginIndex,int-endingIndex)
花费的时间要多一些(构造函数之一)

因此,我的最终Java代码满足所有条件(与以前相比时间更短),如下所示:

import java.util.*;
类TestClass{
公共静态void main(字符串args[])引发异常{
扫描仪sc=新的扫描仪(System.in);
int t=Integer.parseInt(sc.nextLine()),i;
而(t-->0)
{
int n=Integer.parseInt(sc.nextLine());
StringBuilder str=新的StringBuilder(“”);
字符串a=sc.nextLine();
对于(i=1;i=0;i-=2)
str.append(a.substring(i,i+1));
系统输出打印项次(str);
}
}
}

为什么这
而(t-->0)
?你没看到那有多难看吗?使用更多的空格,特别是在运算符周围和kewords之后
if(
更好
如果(
-->
真的很糟糕。这里甚至有一个问题称之为goes to操作符!!!@IharobAlAsimi不同意。
while(t-->0)
清楚地说明了逻辑:
t
转到
0
。我个人更喜欢
while(t-->0)
,但这显然比
而(t-->0)
Ok@Iharob因为你必须打印输入的所有字符,O(n)的复杂性肯定是无与伦比的。也许是那些
System.out.print(a.charAt(i))的复杂性
这在Java中正在变慢。如果您编写输出字符串并立即打印它,您可以尝试加快速度?具体时间限制是什么?Java基准测试很复杂,尤其是因为在启动时加载基本类所需的时间。
bdfeca 
bca
import java.util.*;
class TestClass {
    public static void main(String args[] ) throws Exception {
        Scanner sc = new Scanner(System.in);
        int t = Integer.parseInt(sc.nextLine()), i;
        while ( t --> 0 )
        {
            int n = Integer.parseInt(sc.nextLine());
            String a = sc.nextLine();
            for(i=1;i<n;i+=2)
                System.out.print(a.charAt(i));
            i=n-1;
            if(n%2==0)
                i--;
            for(;i>=0;i-=2)
                System.out.print(a.charAt(i));
            System.out.println();
        }
    }
}
#include <stdio.h>
int main()
{
    int t, n, i;
    char a[10000];
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d %s",&n,a);
        for(i=1;i<n;i+=2)
            printf("%c",a[i]);
        i=n-1;
        if(!(n&1))
            i--;
        for(;i>=0;i-=2)
            printf("%c",a[i]);
        printf("\n");
    }
    return 0;
}
from __future__ import print_function
t = int(input())
for i in range(t):
    n=int(input())
    a=input()
    for i in range(1,n,2):
        print(a[i],end='')
    i=n-1
    if(n%2==0):
        i=i-1
    for q in range(i,-1,-2):
        print(a[q],end='')
    print("\n")
import java.util.*;
class TestClass {
    public static void main(String args[] ) throws Exception {
        Scanner sc = new Scanner(System.in);
        int t = Integer.parseInt(sc.nextLine()), i;
        while(t-->0)
        {
            int n = Integer.parseInt(sc.nextLine());
            StringBuilder str = new StringBuilder("");
            String a = sc.nextLine();
            for(i=1;i<n;i+=2)
                str.append(a.substring(i,i+1));
            i=n-1;
            if(n%2==0)
                i--;
            for(;i>=0;i-=2)
                str.append(a.substring(i,i+1));
            System.out.println(str);
        }
    }
}