开发者社区> 问答> 正文

如何向右移动字符?

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();

}

展开
收起
小六码奴 2019-10-14 16:49:23 4918 0
1 条回答
写回答
取消 提交回答
  • 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

    2019-10-14 16:50:17
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载