字符串在中间字符周围交换

时间:2018-01-29 09:05:26

标签: java string

我有一个关于一种字符串反转的问题,但它没有完全逆转。

如果输入为XYAF,则输出应为AFXYXY是上半场并转移到另一边。

如果输入为XYZAF,则输出应为AFZXYXY是上半场并向右移动。 AF是下半场并向左移动。 Z停留在中间。

我们怎么做?我已经制定了一个有效的计划,但我认为它非常有效。还有其他办法吗?

    String str = "XYAF"; //Output Should be AFXY
    String str1 = "XYZAF"; // Output should be AFZXY

    int length = str1.length();
    int mid = length / 2;
    String output = "" ;
    if (length % 2 == 0) {
        // Even length then divide the string in equal parts
        String x1 = str1.substring(0, mid);
        String x2 = str1.substring(mid, length);
        x3= x2+x1;
    } else {
        // Odd number and we want to
        // xyz and output should be zyx
        String x1 = str1.substring(0, mid);
        String x2 = str1.substring(mid + 1, length);
        x3 = x2 + str1.charAt(mid) + x1;
    }

提前致谢,

2 个答案:

答案 0 :(得分:1)

你也可以利用第二个中间值来将奇数/偶数除以2。

jasmine

答案 1 :(得分:0)

您的代码看起来完全正常且效率很高。

也许你只想以不同的方式组织它:

String[] tests = {"XYAF", "XYZAF"};
for (String test : tests) {
   int length = test.length();
   int mid = length / 2;
   String firstHalf = test.substring(0, mid);
   String midPoint = (length % 2 == 0) ? "" : test.substring(mid, mid+1);
   String secondHalf = test.substring(mid + midPoint.length(), length);
   String output = firstHalf + midPoint + secondHalf;
}