2017-02-03 200 views
-2

手头任务:如何打印字符串的偶数索引和奇数索引字符?

给定一个字符串,S,长度为N,其索引为0到N-1,打印 其偶数索引和奇数索引字符作为2空格分隔 串上一条线。

测试用例写成这样,第一行包含一个整数,N(测试用例的数量) 。 N后续 行的每一行都包含一个字符串。

这里是我的代码:

N = int(raw_input()) 

for i in range(0,N): 
    string = raw_input() 

evenlist = [] 
oddlist = [] 

for item, char in enumerate(strg): 
    if item % 2 == 0: 
     evenlist.append(char) 
    else: 
     oddlist.append(char) 

print ''.join(evenlist), ''.join(oddlist) 

采样运行:

The first input is: 
2 
Hacker 
Rank 

Expected output is: 
Hce akr 
Rn ak 

,但我得到:

HceRn akrak 

这里是对assignment一个链接,或许可以解释问题更好。

+1

这是什么问题? – RomanPerekhrest

+0

以下链接可能会更好地解释问题:https://www.hackerrank.com/challenges/30-review-loop –

+2

您发布的代码不会产生您发布的错误。它看起来像你从内存中重新输入它,生成一组完全不同的问题的代码。不要重新键入 - 总是复制粘贴。 – user2357112

回答

3

简单实现这一目标的方式是通过串切片

>>> my_str = 'Hacker' 
>>> '{} {}'.format(my_str[::2], my_str[1::2]) 
'Hce akr' 

因此,你的整个代码可以写成:

for _ in range(int(raw_input())): 
    my_str = raw_input() 
    print '{} {}'.format(my_str[::2], my_str[1::2]) 
2

你可以这样做,也像这样:

inp = raw_input("Enter your input: ") 

final = "{} {}".format("".join(inp[k] for k in range(len(inp)) if k % 2 == 0), "".join(inp[k] for k in range(len(inp)) if k % 2 != 0)) 
0
import java.io.*; 
import java.util.*; 

public class Solution { 


     private static void f(String s) { 
      // TODO Auto-generated method stub 
      char c[]=s.toCharArray(); 
      int i,j; 

      for (i = 0; i <c.length;i++) 
      { 
       System.out.print(c[i]); 
        i+=1; 
        // System.out.print(" "); 
      } 
      System.out.print(" "); 

      for (j = 1; j<c.length;j++) 
      { 
       System.out.print(c[j]); 
       j+=1;  
      } 

     } 

     public static void main(String[] args) 
     { 
      // TODO Auto-generated method stub 
      Scanner sc=new Scanner(System.in); 
      int s=sc.nextInt(); 
      String s1=sc.next(); 
      f(s1); 

      String s2=sc.next(); 
      System.out.println(); 
      f(s2); 
     } 
}