2017-02-03 166 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); 
     } 
}