Skip to content

Latest commit

 

History

History
192 lines (163 loc) · 3.63 KB

0016.位置互换.md

File metadata and controls

192 lines (163 loc) · 3.63 KB

16. 位置互换

题目链接

C++

#include<iostream>
#include<string>
using namespace std;
void swap(char &a, char &b) { // 交换两个字符串
    char tmp = a;
    a = b;
    b = tmp;
}
int main() {
    int n;
    cin >> n;
    string s;
    while (n--) {
        cin >> s;
        for (int i = 0; i < s.size() - 1; i += 2) { // 在s字符串上原地修改
            swap(s[i], s[i + 1]);
        }
        cout << s << endl;
    }
}

Java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String str = null;
        while((str = reader.readLine())!= null){
            StringTokenizer tokenizer = new StringTokenizer(str);
            int n = Integer.parseInt(tokenizer.nextToken());
            for(int i = 0; i < n; i++){
                String s = reader.readLine();
                StringBuilder sb = new StringBuilder();
                for(int j = 0; j < s.length(); j+= 2){
                    sb.append(s.charAt(j +1)).append(s.charAt(j));
                }
                System.out.println(sb.toString());
            }
        }
    }
}
// 方法二:原地交换
import java.util.Scanner;

public class Main {

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

        int n = sc.nextInt();
        sc.nextLine();
        for (int i = 0; i < n; i++) {
            String s1 = sc.nextLine();
            int len = s1.length();
            char[] chs = s1.toCharArray();
            for (int j = 0; j < len - 1; j += 2) {
                swap(chs, j, j + 1);
            }
            System.out.println(new String(chs));
        }
        sc.close();
    }

    private static void swap(char[] chs, int j, int i) {
        char tmp = chs[j];
        chs[j] = chs[i];
        chs[i] = tmp;
    }
}

python

C = int(input())
for _ in range(C):
    s = input()
    even_chars = s[1::2]
    odd_chars = s[::2]
    result = ''.join(e + o for e, o in zip(even_chars, odd_chars))
    print(result)

Go

package main

import (
	"fmt"
)

func main() {
	var n int

	_, err := fmt.Scanf("%d", &n)
	if err != nil {
		return
	}
	for i := 0; i < n; i++ {
		var s string
		_, err = fmt.Scanf("%s", &s)
		if err != nil {
			return
		}
		if len(s) > 50 || len(s)%2 != 0 {
			return
		}
		fmt.Println(swap(s))
	}
}

func swap(s string) string {
	var res string
	for i := 0; i < len(s); i += 2 {
		res = res + string(s[i+1]) + string(s[i])
	}
	return res
}

Js

const rl=require("readline").createInterface({input:process.stdin});
const iter=rl[Symbol.asyncIterator]();
const readline=async ()=>(await iter.next()).value;

function reverse(str){
  let res="";
  for(let i=0;i<str.length;i+=2){
    res+=str[i+1]+str[i];
  }
  return res;
}

async function main(){
  let n=parseInt(await readline());
  for(let i=0;i<n;i++){
    let str=await readline();
    console.log(reverse(str));
  }
}

main();

C

#include <stdio.h>
#include <string.h>

void swap(char* a, char* b) { // 交换两个字符
    char tmp = *a;
    *a = *b;
    *b = tmp;
}

int main() {
    int n;
    scanf("%d", &n);
    char s[100];
    while (n--) {
        scanf("%s", s);
        int len = strlen(s);
        for (int i = 0; i < len - 1; i += 2) { // 在s字符串上原地修改
            swap(&s[i], &s[i + 1]);
        }
        printf("%s\n", s);
    }
    return 0;
}