Java 什么';关于交换相邻字符,我的代码有什么问题吗?
问题是:编写一个名为swapPairs的方法,该方法接受一个字符串作为参数,并返回该字符串,每对相邻字母都反转一次。如果字符串的字母数为奇数,则最后一个字母不变。例如,调用swapPairs(“示例”)应返回“xemalpe”,而调用swapPairs(“hello there”)应返回“ehll ohtree”Java 什么';关于交换相邻字符,我的代码有什么问题吗?,java,Java,问题是:编写一个名为swapPairs的方法,该方法接受一个字符串作为参数,并返回该字符串,每对相邻字母都反转一次。如果字符串的字母数为奇数,则最后一个字母不变。例如,调用swapPairs(“示例”)应返回“xemalpe”,而调用swapPairs(“hello there”)应返回“ehll ohtree” 公共静态字符串交换(字符串s){ 字符串t=“”; 如果(s.length()%2==0){ for(int i=0;iString#charAt返回一个char。添加两个chars将
公共静态字符串交换(字符串s){
字符串t=“”;
如果(s.length()%2==0){
for(int i=0;iString#charAt
返回一个char
。添加两个char
s将导致另一个char(因为char
是一种数字类型),而不是像您预期的那样以String
的形式出现。编译器应该向该方向提供一条错误消息
您可以使用String#substring
。您可以修改您的方法,改为使用StringBuilder
,并对其进行如下更改:
sb.append(s.charAt((2 * i) + 1)).append(s.charAt(2 * i));
对于以下循环,只能使用1:
public static String swapPairs(String s) {
StringBuilder t = new StringBuilder();
for(int i = 0; i < s.length() - 1; i += 2) {
t.append(s.charAt(i + 1));
t.append(s.charAt(i));
}
if(s.length() % 2 == 1) { //appending the last character if needed
t.append(s.charAt(s.length() - 1));
}
return t.toString();
}
公共静态字符串交换(字符串s){
StringBuilder t=新的StringBuilder();
对于(int i=0;i
另外,使用StringBuilder也是一个好主意:)那么会发生什么呢?您可以将for
循环拉到if
语句之外,在这两种情况下都是一样的,或者使用charAt()
与StringBuilder
的append()
一起使用可能会更有效:)
public static String swapPairs(String s) {
StringBuilder t = new StringBuilder();
for(int i = 0; i < s.length() - 1; i += 2) {
t.append(s.charAt(i + 1));
t.append(s.charAt(i));
}
if(s.length() % 2 == 1) { //appending the last character if needed
t.append(s.charAt(s.length() - 1));
}
return t.toString();
}