首页 > 试题广场 >

循环右移

[编程题]循环右移
  • 热度指数:1136 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
有一个二进制数的字符串,想把字符串循环右移k位,然后得到一个新的二进制数,求这个数的十进制值是多少。给定一个二进制字符串str和循环位移位数k,返回循环后的二进制数的十进制值。

示例1

输入

"10110",2

输出

21

说明

新二进制串为“10101”,十进制值为21 

备注:
import java.util.*;
public class Solution {
    /**
     * 位移后二进制串的十进制值
     * @param str string字符串 二进制字符串
     * @param k int整型 循环位移次数
     * @return long长整型
     */
    public long rotateRight(String str, int k) {
        // write code here
        if (k > str.length()) {
            k = k % str.length();
        }
        String head = str.substring(str.length() - k);
        String tail = str.substring(0, str.length() - k);

        str = head + tail;
        return Long.parseLong(str, 2);
    }
}

发表于 2021-10-06 23:56:38 回复(0)
public static long rotateRight (String str, int k) {
            // write code here
         return Long.parseLong(str.substring(str.length()-k,str.length())+str.substring(0,str.length()-k),2);
    }

运行11ms 有点长
发表于 2021-02-02 12:07:34 回复(0)