我有一个关于一种字符串反转的问题,但它没有完全逆转。
如果输入为XYAF
,则输出应为AFXY
。 XY
是上半场并转移到另一边。
如果输入为XYZAF
,则输出应为AFZXY
。 XY
是上半场并向右移动。 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;
}
提前致谢,
答案 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;
}