Java 反转字符串,然后每N个字母交换一次
这个问题我已经解决了两个小时了。基本上我需要反转一个字符串(我没有问题),然后每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
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。