Skip to content

16. 位置互换

时间限制:1.000S 空间限制:32MB

题目描述

给定一个长度为偶数位的字符串,请编程实现字符串的奇偶位互换。

输入描述

输入包含多组测试数据。 输入的第一行是一个整数n,表示有测试数据。(整个输入中,只有一个n) 接下来是n组测试数据,保证串长为偶数位(串长<=50)。

输出描述

请为每组测试数据输出奇偶位互换后的结果,每组输出占一行。

输入示例

2

0aa0

bb00

输出示例

a00a

bb00

解法一(模拟)

思路分析:

  1. 根据题意模拟

实现代码如下:

java
public class k_16_PositionSwap {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n;
        String number;
        while (in.hasNext()) {
            number = in.nextLine();
            n = Integer.parseInt(number);
            while (n-- > 0) {
                String evenStr = in.nextLine();
                System.out.println(positionSwap(evenStr));
            }
        }
    }
    private static String positionSwap(String even) {
        StringBuilder result = new StringBuilder();
        int len = even.length();
        for (int i = 0; i < len-1; i += 2) {
            result.append(even.charAt(i+1)).append(even.charAt(i));
        }
        return result.toString();
    }
}

运行结果如下:

运行时间: 468ms 消耗内存: 13924kb

复杂度分析:

  • 时间复杂度: O(n)
  • 空间复杂度: O(1)