4.moveAllXsRight将一个char和一个String作为输入并返回一个String:输出字符串应与输入字符串相同,只是每次出现的输入字符都应向右移一个字符。如果无法向右移动字符(它在字符串的末尾),则不会移动。不要使用数组来解决此问题。
HW2.moveAllXsRight('X',“ abcXdeXXXfghXiXXjXX”)“ abcdXefXXXghiXjXXXX”
现在是我的代码:
public static String moveAllXsRight(char a, String b){ StringBuilder sb = new StringBuilder(); String str =""; for ( int i = 0; i<b.length(); i++){ if(b.charAt(i) != a){ sb.append(b.charAt(i)); }
else if(b.charAt(i) == a){
str = Character.toString(b.charAt(i));
}
else {
if(b.charAt(i+2)>sb.length()){
sb.append(b.charAt(i));
}
}
}
return sb.toString();
}
public static String moveAllXsRight(char a, String b) { StringBuilder sb = new StringBuilder(b);
for(int i = 0; i < sb.length() - 1; i++) {
if(sb.charAt(i) == a) {
// swapping with the right character
sb.setCharAt(i, sb.charAt(i + 1));
sb.setCharAt(i + 1, a);
// skipping next index (because we already know it contains `a`)
i = i + 1;
}
}
return sb.toString();
} 对于此示例:
moveAllXsRight('X', "abcXdeXXXfghXiXXjXX"); 这是输出:
abcdXeXXfXghiXXXjXX 更新:
通过稍微改变for循环(将其反转):
for(int i = sb.length() - 2; i > 0; i--) { // inverse loop if(sb.charAt(i) == a) { // swapping sb.setCharAt(i, sb.charAt(i + 1)); sb.setCharAt(i + 1, a); } } 现在这个:
moveAllXsRight('X', "abcXdeXXXfghXiXXjXX"); 结果是:
abcdXefXXXghiXjXXXX
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。