所以我现在正在做一个个人项目,我做了一个程序,尝试交换给定字符串中的每两个字母。
所以我想要这样的输出:
(注意输入字符串是“abllte”)
ballet
所以我写了这个方法
public static String codeString(String input) {
String firstLetter = "";
String secoundLetter = "";
String result = "";
for(int i = 0; i < input.length()-1; i++){
for(int c = 0; c < i; c = c +2)
{
firstLetter = input.substring(c,c + 1);
secoundLetter = input.substring(c + 1, c + 2);
}
result = result + secoundLetter + firstLetter;
}
return result;
}
但我得到的结果是:
ababllll
你知道怎么解决这个问题吗?
提前谢谢!
3条答案
按热度按时间4jb9z9bj1#
我不确定嵌套for循环的意义是什么。你只需要一个循环就可以做到。
如果输入字符串的字符数为奇数,则必须附加额外的最后一个字符。
6uxekuva2#
你只需要一个循环。这适用于偶数和奇数长度的字符串。
首先,使用的方法返回
StringBuilder
处于当前修改状态。所以呢
sb.insert(i, sb.charAt(i+1))
在处插入字符i+1
在i
所以如果sb
包含ab
,StringBuilder
现在将包含bab
insert返回修改的StringBuilder
那么现在呢sb.deleteCharAt(i+2)
删除第二个a
(刚刚复制的那个)。然后重复此操作,直到交换所有字符。
由于不断插入和删除字符,这不是很有效。
印刷品
对于一个更有效的算法,这将是一个方向。它也更直观。
这张照片和上面一样。
x7yiwoj43#
您不需要嵌套循环。将外循环更改为“逐步”
2
即i = i + 2
拆下内环。输出:
另一种方法:
可以使用两个参数创建函数:
input
字符串作为第一个参数n
作为第二个参数n
中的字符input
字符串需要反转。输出: