簡體   English   中英

如何打印字符串的偶數索引和奇數索引字符?

[英]How to print the even-indexed and odd-indexed characters of strings?

手頭的任務:

給定一個長度為 N 的字符串 S,索引從 0 到 N-1,將其偶數索引和奇數索引字符作為 2 個空格分隔的字符串打印在一行上。

測試用例的編寫使得第一行包含一個整數 N(測試用例的數量)。 后續 N 行中的每一行 i 都包含一個字符串。

這是我的代碼:

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

這是對一個鏈接分配,可能更好地解釋這個問題。

實現這一點的更簡單方法是使用字符串切片

>>> 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])

你也可以這樣做:

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))

在 Python-3 中

for i in range(int(input())):
    STDIN = input()
    print(f"{STDIN[::2]} {STDIN[1::2]}")

輸入:

 2
 Hacker
 Rank

輸出:

Hce akr Rn ak

試試下面的代碼:

N = int(input())

evenlist = [] oddlist = []

for i in range(0,N): 
   string=input() 
   evenlist.clear() 
   oddlist.clear() 
   for item, char in enumerate(string): 
     if item % 2 == 0: 
       evenlist.append(char) 
     else: oddlist.append(char) 
   print(''.join(evenlist),''.join(oddlist))

print('')

Hacker Rank 問題的解決方案是使用字符串切片和列表。

n= int(input())
r = []
if(n>=1 and n<= 10):
    for i in range(n):
        r.append(input())
for s in r:
    print("{} {}".format(s[::2],s[1::2]))
num = int(input())
mylist = []

for words in range (num):
    words = input()
    mylist.append(words)
#print(mylist)

i=0
#Considering 0th position as even place here.
while i<len(mylist):
    print("Letters at even places = {} Letters at odd places ={}".
      format(mylist[i][0:len(mylist[i]):2], mylist[i][1:len(mylist[i]):2]))
    i+=1

這是針對您的問題的python解決方案。

t=int(input("enter number "))
for i in range(1,t+1) :
    s=input("String")
    even=[]
    odd=[]
    for j,char in enumerate(s) :
        if j%2==0:
            even.append(char)
        else:
            odd.append(char)
   print(''.join(even), ''.join(odd))
t = int(input())
for i in range(t):
    s = input()
    idx = 0
    newstr = ''
    newstr2 = ''
    for letter in s:
        if idx % 2 == 0:
            newstr = newstr + s[idx]
        else:
            newstr2 = newstr2 + s[idx]
        idx += 1
    print(newstr, newstr2)
i=0
for t in range(int(input())):
    S = input()
    y = len(S)

    print(S[i:y+1:2],S[i+1:y+1:2] )


#output= "satisfies all the test cases of HackerRank...."

#使用for循環和條件語句

text=input()
for items in range(len(text)):
    if items%2==0:
        print(text[items],end='')
print(end='  ')
for items in range(len(text)):
    if items%2!=0:
        print(text[items],end='')
N = int(input())
for _ in range(0,N):
    my_str = input()
    print ('{} {}'.format(my_str[::2], my_str[1::2]))

#use this ,這將完全適用於此

我是一個新的編碼蜜蜂,但這在解決所有測試用例的情況下運行良好。

T=int(input())
for i in range(T):
  S=input("")
  for item in range(length(S)):
     if item%2==0:
       print(S[item],end="")
  print(end=" ")
  for item in range(length(S)):
     if item%2!=0:
       print(S[item],end="")
  print(end='\n')

這也可以通過連接單詞來完成

Num_set = int(input())


for item in range(Num_set):
    word = input()
    new = ""
    second = ""
    for i in range(len(word)):
    
        if i%2 == 0:
            new = new + word[i] 
        else:
            second = second +word[i]
    print(new +" "+second)
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);
        }
}
Try the below algorithm. It is in Java. However the basic procedure is to 
scan the input word string along its length in increments of 2. The even 
index characters are printed first using a for loop starting with i = 0 and 
by adding an additional i++ inside the loop. The odd 
characters are printed starting the for loop from 1 and incrementing by steps 
of 2.  

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
import java.util.Arrays;

public class Solution {

public static void main(String[] args) {
    

    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
   
    for(int iter= 1;iter<=n;iter++)
    {
        scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
        String myString = scanner.nextLine();
        char[] myCharArray = myString.toCharArray();
        int t = myString.length();
                       
            for(int i = 0; i < t; i++)
                {
                    // Print each sequential character on the same line
                    System.out.print(myCharArray[i]); 
                    i++;
                }

            System.out.print(" "); 

            for(int k = 1; k < t; k++)
                {
                    // Print each sequential character on the same line
                    System.out.print(myCharArray[k]);
                    k++; 
                }
     
        System.out.print("\n");
    
        }

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

public class Solution {

    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
        Scanner s=new Scanner(System.in);
        String str;
        int T=s.nextInt();
        for(int i=0;i<T;i++){
            str=s.next();
          char c[]=str.toCharArray();
          int j,k;
          for(j=0;j<c.length;j++){
              System.out.print(c[j]);
              j+=1;
          }
          System.out.print(" ");
          for(k=1;k<c.length;k++){
              System.out.print(c[k]);
                k+=1;
          }
          System.out.println();
          }

        s.close();
    }
}

//在java中只是為了更新他們沒有添加的多個字符串的上述答案 //循環

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

public class dummy {


    public static void main(String[] args) {
         Scanner sc=new Scanner(System.in);
         System.out.print("Enter the number of test cases :");

         int s=sc.nextInt();

         //for loop for multiple strings as per the input
         for(int m=1;m<= s;m++)
         {
              System.out.print("\n Enter the string : ");       
              String s1=sc.next();
              f(s1); 
              System.out.print();       

         }

    }

    private static void f(String s1){

            char c[]=s1.toCharArray();
            int i,j;

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

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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM