0

我已经被这个问题困住了两个小时了。基本上我需要反转一个字符串(我没有做任何问题),然后交换每个第 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;
        }

}

我知道字符串在 java 中是不可变的,所以我需要将反转的字符串转换为 char 数组,然后循环遍历数组,但不知道在这里做什么。

任何建议将不胜感激。它在我的脑海里。

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

4

3 回答 3

0

如果要将当前字符与下一个字符交换,则可以执行以下操作:

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();
}

我原谅 null 和超出范围的检查 =) 祝你好运

于 2013-10-17T05:27:03.220 回答
0

你没有澄清交换逻辑,但是这样的事情怎么样:

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;
}
于 2013-10-17T05:11:34.090 回答
0

这是一个基本的交换

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

从您的问题中不确定您要做什么,所以我无法给出明确的答案

于 2013-10-17T05:13:16.737 回答