RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 750471
Accepted
invzbl3
invzbl3
Asked:2020-11-28 04:07:27 +0000 UTC2020-11-28 04:07:27 +0000 UTC 2020-11-28 04:07:27 +0000 UTC

通过1个Java字符实现循环右移方法的正确方法是什么?

  • 772

请显示使用逐字符交换(或替换)的方法的实现。

在任务中,需要实现循环右移1个字符(即最后一个字符到第一位)的方法。

最重要的是,我在程序中输入了一串字符,随后我移动了其中的元素。这个方法我试过了,但是编译后的结果不是你需要的。

public String row2(String row) { // сдвиг вправо на 1 элемент
    char[] m = row.toCharArray();
                int n = 1;
                String swappedString = "";
                for (int i = m.length-n; i >= 0; i--) {
                    if(i+n >= row.length()){
                        m[i+n-row.length()] = m[i];
                    }
                    else{
                        m[i+n] = m[i];
                        swappedString +=m[i];
                    }
                }
                return   swappedString;
        }

UPD:在实现中添加了方法

1)      public String swappedString(String row) { 
            String row3 = row.charAt(row.length() - 1) + row.substring(0, 
            row.length() - 1);
            return row3;
        }



2)      public String swappedString(String row) { 
                int cursor = row.length() - 1;    
                return row.substring(cursor) + row.substring(0, cursor);
                 }
java
  • 5 5 个回答
  • 10 Views

5 个回答

  • Voted
  1. Best Answer
    naXa stands with Ukraine
    2020-11-28T04:37:56Z2020-11-28T04:37:56Z

    非常简单的解决方案:

    String row = row.charAt(row.length() - 1) + row.substring(0, row.length() - 1);
    
    • 3
  2. Виктор
    2020-11-28T04:23:22Z2020-11-28T04:23:22Z

    如果你不怎么改变你的代码,那么 2 个周期。

    public String cycle(String row) { // сдвиг вправо на 1 элемент
        char[] m = row.toCharArray();
        int n = 1;
        char[] result = new char[m.length];
        for (int i = 0; i<m.length - n; i++) {
            result[i+n] = m[i];
        }
    
        for (int i = 0; i<n; i++) {
            result[i] = m[m.length - n + i ];
        }
    
        return new String(result);
    }
    

    如果你使用类方法String,那么你可以让它更容易

    public String substring(String row) { // сдвиг вправо на 1 элемент
        int move = 1;
        int cursor = row.length() - move;
        return row.substring(cursor) + row.substring(0, cursor);
    }
    
    • 2
  3. Antonio112009
    2020-11-28T04:28:14Z2020-11-28T04:28:14Z

    来,试试这个!

    原理很简单:你在循环中读取每个字符,但是在将它添加到右侧的地方lineNew(以免得到与原来相同的行),你将字符添加到左侧line.charAt(i) + lineNew

    public class stack {
        public String replace(String line) {
            String lineNew = "";
            for(int i = 0; i < line.length(); i++) {
                lineNew = line.charAt(i) + lineNew;
            }
            return lineNew;
        }
        public static void main(String[] args) {
            stack teStack = new stack();
            System.out.println(teStack.replace("dance"));
        }
    }
    
    • 1
  4. Alex Chermenin
    2020-11-28T15:38:07Z2020-11-28T15:38:07Z

    你可以使用这样的东西:

    String rotate(String s, int shift) {
        if ((shift %= s.length()) == 0) return s;
        int finalShift = shift < 0 ? shift + s.length() : shift;
        return IntStream.range(0, s.length())
            .map(i -> (i - finalShift + s.length()) % s.length()).map(s::charAt)
            .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
            .toString();
    }
    

    正值shift向右移动,负值向左移动。

    • 1
  5. naXa stands with Ukraine
    2020-11-28T04:21:39Z2020-11-28T04:21:39Z

    这样的解决方案(Java 8)怎么样?

    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;
    import java.util.stream.Collectors;
    ...
    
    public static String rightShift(String row) {
        List<Character> chars = row.chars().mapToObj(c -> (char) c).collect(Collectors.toList());
        Collections.rotate(chars, 1);
        String result = chars.stream().map(e->e.toString()).collect(Collectors.joining());
    
        return result;
    }
    
    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    Python 3.6 - 安装 MySQL (Windows)

    • 1 个回答
  • Marko Smith

    C++ 编写程序“计算单个岛屿”。填充一个二维数组 12x12 0 和 1

    • 2 个回答
  • Marko Smith

    返回指针的函数

    • 1 个回答
  • Marko Smith

    我使用 django 管理面板添加图像,但它没有显示

    • 1 个回答
  • Marko Smith

    这些条目是什么意思,它们的完整等效项是什么样的

    • 2 个回答
  • Marko Smith

    浏览器仍然缓存文件数据

    • 1 个回答
  • Marko Smith

    在 Excel VBA 中激活工作表的问题

    • 3 个回答
  • Marko Smith

    为什么内置类型中包含复数而小数不包含?

    • 2 个回答
  • Marko Smith

    获得唯一途径

    • 3 个回答
  • Marko Smith

    告诉我一个像幻灯片一样创建滚动的库

    • 1 个回答
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Алексей Шиманский 如何以及通过什么方式来查找 Javascript 代码中的错误? 2020-08-03 00:21:37 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5