Hackerrank 30天代码第6天java

时间:2018-03-26 19:48:04

标签: java

  

任务:   给定长度为N且从0到N-1索引的字符串S,将其偶数索引和奇数索引字符打印为单行上的2个以空格分隔的字符串

     

输入格式:   第一行包含一个整数T(测试用例的数量)。   T后续行的每一行i包含字符串S。

     

约束:1< = T< = 10
                2 <=长度S <= 10000

我尝试执行但是它没有通过测试用例,因为它不会在一行中打印。我的代码:

public static void main(String[] args)
{
    Scanner sc = new Scanner(System.in);
    int testcase = sc.nextInt();
    sc.nextLine();

    for (int i = 0; i < testcase; i++)
    {
        String s = sc.nextLine();
        char[] chararray = s.toCharArray();
        for (int j = 0; j < chararray.length; j++)
        {
            if (j % 2 == 0)
            {
                System.out.println(chararray[j]);
            }
        }
        System.out.println(" ");
        for(int j = 0; j < chararray.length; j++)
        {
            if (j % 2 != 0)
            {
                System.out.println(chararray[j]);
            }
        }
        System.out.println();
    }
}

上述代码的输出是:

  

2
  HACKER
  ^ h
  ç
  E

     

一个
  ķ
  R

如何在一行中打印偶数和奇数字符串,分隔2个空格?

3 个答案:

答案 0 :(得分:1)

查看完整代码

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

public class Solution {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int N = in.nextInt();

        in.nextLine();
        
        for(int i=0; i<N; i++){
            String string = in.nextLine();
            char[] charArray = string.toCharArray();

            for (int j = 0; j < charArray.length; j++) 
            {
                if (j % 2 == 0) 
                {
                    System.out.print(charArray[j]);
                }
            }

            System.out.print(" ");

            for (int j = 0; j < charArray.length; j++) 
            {
                if (j % 2 != 0) 
                {
                    System.out.print(charArray[j]);
                }
            }

            System.out.println();
        }
    }
}

答案 1 :(得分:0)

试试这个:

public static void main(String[] args)
    {
           Scanner sc = new Scanner(System.in);
           int testcase = sc.nextInt();
           sc.nextLine(); 

           for(int i=0;i<testcase;i++)
           {
               String s= sc.nextLine();
               char[] chararray=s.toCharArray();
              for(int j=0;j<chararray.length;j++)
               {
                   if(j%2==0){
                       System.out.print(chararray[j]);
                   }
               }
                System.out.println(" ");
               for(int j=0;j<chararray.length;j++)
               {
                   if(j%2!=0){
                       System.out.print(chararray[j]);
                   }
               }
               System.out.println();
           }
    }

答案 2 :(得分:0)

这可能比以前好:

private static void splitPrinter(String s) {
    StringBuilder sO = new StringBuilder();
    StringBuilder sE = new StringBuilder();
    for (int i = 0; i < s.length(); i++) {
        if (i%2==0) {
            sE.append(s.charAt(i));
        } else {
            sO.append(s.charAt(i));        
        }
    }
    sE.append(" ");
    sE.append(sO.toString());
    System.out.println(sE.toString());
}

*编辑....认为可以通过1个字符串构建器轻松完成,但是你必须担心单词的长度是偶数还是奇数。

*再次编辑以删除多余的空格