Java 反转字符串,然后每N个字母交换一次

Java 反转字符串,然后每N个字母交换一次,java,string,Java,String,这个问题我已经解决了两个小时了。基本上我需要反转一个字符串(我没有问题),然后每N个字母交换一次(这是我卡住的地方) 以下是我到目前为止的情况: public class StringMethods { public static void main(String[] args) { String s = "Hey there"; int n = 2; System.out.println(re

这个问题我已经解决了两个小时了。基本上我需要反转一个字符串(我没有问题),然后每N个字母交换一次(这是我卡住的地方)

以下是我到目前为止的情况:

    public class StringMethods {


        public static void main(String[] args) {
            String s = "Hey there";
            int n = 2;

            System.out.println(reverseString(s));
            System.out.println(reverseStringChallenge(s, n));

        }

        private static String reverseString(String s) {
            String reversed = "";
            for (int i = s.length() - 1; i >= 0; i--) {
                reversed = reversed + s.charAt(i);
            }
            return reversed;
        }


        private static String reverseStringChallenge(String s, int n) {
            String reversed = "";
            String swapped = "";
            for (int i = s.length() - 1; i >= 0; i--) {
                reversed = reversed + s.charAt(i); // normal reverse
                }

            char [] charArray = reversed.toCharArray();  //Strings are immutable, convert string to char array

            for(int i = 0; i < charArray.length; i++) {
                if(i%n == 0) {  
                                //this is where im stuck
                }

            }


            return swapped;
        }

}
公共类StringMethods{
公共静态void main(字符串[]args){
String s=“你好”;
int n=2;
系统输出打印项次(反向限制);
System.out.println(反向限制挑战(s,n));
}
私有静态字符串反向限制(字符串s){
字符串反转=”;
对于(int i=s.length()-1;i>=0;i--){
反向=反向+s.charAt(i);
}
反向返回;
}
私有静态字符串反转挑战(字符串s,int n){
字符串反转=”;
字符串交换=”;
对于(int i=s.length()-1;i>=0;i--){
反转=反转+s.charAt(i);//正常反转
}
char[]charArray=reversed.toCharArray();//字符串是不可变的,请将字符串转换为char数组
for(int i=0;i
我知道字符串在java中是不可变的,所以我需要将反转后的字符串转换成一个char数组,然后在数组中循环,但不确定在这里要做什么

任何建议都将不胜感激。这让我头疼


编辑:对不起,我所说的每n个字母交换一次的意思是说n=2。然后,每一个字母都会与其前一个字母交换。

您没有阐明交换逻辑,但类似这样的情况如何:

for(int i = n; i < charArray.length; i += n) {
    char a = charArray[i-n];
    char b = charArray[n];
    charArray[i-n] = b;
    charArray[n] = a;
}
for(int i=n;i
这里有一个基本的交换

int n = 1; 
int n1 = 2;

int temp = n;  // variable to hold n value
n = n2;    // make n = n2
n2 = temp; // make n2 = n

// now n = 2
// and n2 = 1

从你的问题来看,我不太确定你想做什么,所以我不能给出确切的答案。如果你正在用下一个字符替换当前字符,你可以做如下操作:

private static String reverseStringChallenge(String s, int n) 
{

String reversed = StringUitls.reverse(s); 
StringBuilder sb = new StringBuilder();
char [] charArray = reversed.toCharArray(); 

for(int i = 0; i < charArray.length; i++) {
 if(i%n == 0)
 {
   sb.append(charArray[i+1]).append(charArray[i]);
   i++;
 }else{
   sb.append(charArray[i]);
 }
}
return sb.toString();
}
private static String reverseStringChallenge(字符串s,int n)
{
字符串反转=字符串反转;
StringBuilder sb=新的StringBuilder();
char[]charArray=reversed.toCharArray();
for(int i=0;i

请原谅空检查和越界检查=)祝您好运

您期望的输出示例是什么?否则,请澄清你所说的“每N个字母交换一次”是什么意思,因为不清楚你想用什么交换这个“第N个字母”。你需要用什么交换第N个字母?说真的。。。你想干什么??。。给样品I/P和O/P。我不明白你想做什么。请给出输入和输出的例子。那怎么可能是家庭作业呢!这是纯生产性代码…对于长度为5的字符串,n=2,将用4交换2,用2交换4。