牛客编程巅峰赛S1第6场——A循环右移(字符串右移)

题目描述:

牛客编程巅峰赛S1第6场——A循环右移(字符串右移)_第1张图片

解题思路:

这道题很简单,思路就是求出右移后的字符串,然后转换成对应的十进制数即可,我是直接使用的API,Long.valueOf(s,2);转换的,也可以模拟位运算求出。
参考代码:

    public long rotateRight (String str, int k) {
        if(str.length()==1)
            return Long.valueOf(str,2);
       char[] c=str.toCharArray();
        for (int i = 0; i < k; i++) {
            c=right(c);
        }
        String s=new String(c);
        return Long.valueOf(s,2);

    }

    char[] right(char[] c)
    {
        char[] ch=new char[c.length];
        ch[0]=c[c.length-1];
        for (int i = 1; i < c.length; i++) {
            ch[i]=c[i-1];
        }
        return ch;
    }

在进行右移的操作的时候,我是写了一个移动一位的函数,然后在循环调用k次实现右移k次的。还要其他的简单方法。

例如:

    private static String copy(char[] c,int k)
    {
        return String.copyValueOf(c,c.length-k,k)+String.copyValueOf(c,0,c.length-k);
    }

需要注意索引的细节。

你可能感兴趣的:(比赛)