问题:编写一个名为swapPairs的方法,该方法接受String作为参数,并以相邻的每对相邻字母相反的方式返回该String。如果字符串的字母数为奇数,则最后一个字母不变。例如,调用swapPairs(“ example”)应该返回“ xemalpe”,调用swapPairs(“ hello there”)应该返回“ ehll ohtree”。
public static String swapPairs(String s) {
String t="";
if(s.length()%2==0) {
for (int i=0;i<s.length()/2;i++) {
t+=s.charAt(2*i+1)+s.charAt(2*i);
}
}
else {
for (int i=0;i<s.length()/2;i++) {
t+=s.charAt(2*i+1)+s.charAt(2*i);
}
t+=s.charAt(s.length()-1);
}
return t;
}
答案 0 :(得分:1)
您只能将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();
}
也可以使用StringBuilder:)
答案 1 :(得分:0)
String#charAt
返回一个char
。添加两个char
将导致另一个字符(因为char
是数字类型),而不是您所期望的String
。编译器应向您提供该方向的错误消息。
您可以改用String#substring
。
答案 2 :(得分:0)
您可以修改方法,改为使用StringBuilder
并将其更改为:
sb.append(s.charAt((2 * i) + 1)).append(s.charAt(2 * i));