示例: 如果我给一个数字12345,我应该得到一个类似15243的答案
以相同的方式如果它是123456,我应该得到162534
我已经尝试使用反向技术获取第一个值并附加最后一个值
public class MyFirstJavaProgram {
public static void main(String []args) {
String str = "12345";
String val = str;
char a;
int num=0;
int d=0;
int n;
for(int i=0; i<=str.length()/2; i++) {
a = str.charAt(i);
num = num*10+Character.getNumericValue(a);
if(Integer.parseInt(str)!=0){
d=Integer.parseInt(str)%10;
num = num*10+d;
n=Integer.parseInt(str)/10;
str = Integer.toString(n);
}
}
System.out.println(num);
}
}
如果我给出偶数或奇数,我应该得到结果
答案 0 :(得分:3)
如果没有做可能为您做的家庭作业,请想象您有一个循环,其中有两个整数变量a和b。变量a和b是字符串索引。
您正在从字符串中的a,b,a,b,a,b等位置获取字符。
但是a和b的值需要针对每次迭代进行更改。如果String的长度为n,则a将遵循序列0、1、2、3 ...,而b将遵循序列(n-1),(n-2),(n-3)等>
循环应在a
答案 1 :(得分:0)
这是我为您运动的解决方案:
方法参数“ A”是要解析的整数。
首先从给定的数字创建Char Array,然后对其进行迭代。如果i%2 == 0,则表示您从开头开始输入数字,否则从结尾开始输入
public static int algorithm(int A) {
StringBuilder shuffleNumber = new StringBuilder();
char[] numbersArray = Integer.toString(A).toCharArray();
for (int i = 0; i < numbersArray.length; i++) {
if (i % 2 == 0)
shuffleNumber.append(numbersArray[i / 2]);
else
shuffleNumber.append(numbersArray[numbersArray.length - i / 2 - 1]);
}
return Integer.parseInt(shuffleNumber.toString());
}
答案 2 :(得分:0)
通过从String
到int
的转换(这是不需要IMHO的),您使事情变得复杂。您可以将代码简化为以下内容:
public static void main(String[] args) {
String str = "123456";
StringBuffer sb = new StringBuffer();
int j = str.length() - 1;
for (int i = 0; i < str.length() / 2; i++) {
if (i != j) {
sb.append(str.charAt(i));
sb.append(str.charAt(j));
j--;
}
}
if (str.length() % 2 != 0) { // if length is odd
sb.append(str.charAt((str.length() / 2)));
}
System.out.println(sb);
}
逻辑:
i
表示从字符串开头开始的索引j
表示从字符串末尾开始的索引i
并递减j
直到我们到达字符串的中间。答案 3 :(得分:0)
如果您想要一个不带字符串方法的解决方案,那么没有一个那么复杂了:
public static void main(String[] args) throws IOException {
String str = "1234567";
int len = str.length();
int num=0;
char a;
for(int i = 0; i < len / 2; i++) {
a = str.charAt(i);
num = num * 10 + Character.getNumericValue(a);
a = str.charAt(len -1 - i);
num = num * 10 + Character.getNumericValue(a);
}
if (len % 2 == 1) {
a = str.charAt(str.length() / 2);
num = num * 10 + Character.getNumericValue(a);
}
System.out.println(num);
}
将打印
1726354
请检查最后一个数字是否为奇数。
答案 4 :(得分:0)
public class MyFirstJavaProgram {
public static void main(String []args) {
String str = "12345678";
int val = str.length();
char a;
int num=0;
int d=0;
int n;
for(int i=0; i<=str.length()-2; i++)
{
a = str.charAt(i);
num = num*10+Character.getNumericValue(a);
if(Integer.parseInt(str)!=0)
{
d=Integer.parseInt(str)%10;
num = num*10+d;
n=Integer.parseInt(str)/10;
str = Integer.toString( n );
}
}
if(val%2!=0)
{
num = num*10+Integer.parseInt(str)%10;
System.out.println(num);
}
else{System.out.println(num);}
}
}
这正在解决我的问题...谢谢
答案 5 :(得分:0)
以下是我的解决方案-
public static void solution(String s) {
StringBuffer st = new StringBuffer();
for (int i = 0; i < s.length() / 2; i++) {
st.append(s.charAt(i));
st.append(s.charAt(s.length() - 1 - i)); // appending characters from last
}
if (s.length() % 2 != 0) {
st.append(s.charAt(s.length() / 2));
}
System.out.println(Integer.parseInt(st.toString()));
}
我的逻辑是继续将第一个和最后一个字符追加到新字符串,直到i