【问题标题】:Hackerrank 30 days of code day 6 javaHackerrank 30 天代码 Day 6 java
【发布时间】:2018-03-26 19:48:03
【问题描述】:

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

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

约束:1 2

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

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
黑客
H
C
E

一个

回复

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

【问题讨论】:

  • 作为提示,还有一个System.out.print 方法。
  • 1) 构建两个字符串。 2)打印它们,它们之间有一个空格。或使用 2 次通行证。
  • Hackerrank 不是你应该自己做的事情吗?投票结束并删除问题。这是作弊。
  • 我是 Java 新手。如果我想作弊,已经有很多资源可供复制和提交。但我想检查并修复我出错的地方。
  • 嘿 ankita 我的解决方案没有用吗?如果您遇到任何问题,请告诉我们。

标签: java


【解决方案1】:

这可能比以前更好:

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());
}

*edit.... 认为使用 1 个字符串生成器可以轻松完成,但是您必须担心单词的长度是偶数还是奇数。

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

【讨论】:

  • 不正确 - 您应该有两个由空格分隔的字符串。您有许多字符,每个字符用空格分隔。
  • 那么就更简单了
【解决方案2】:

查看完整代码

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();
        }
    }
}

【讨论】:

    【解决方案3】:

    试试这个:

    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 :(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多