牛客编程巅峰赛S1第6场——A循环右移(字符串右移)
程序员文章站
2022-04-12 22:36:22
题目描述:解题思路:这道题很简单,思路就是求出右移后的字符串,然后转换成对应的十进制数即可,我是直接使用的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();...
题目描述:
解题思路:
这道题很简单,思路就是求出右移后的字符串,然后转换成对应的十进制数即可,我是直接使用的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);
}
需要注意索引的细节。
本文地址:https://blog.csdn.net/qq_44900959/article/details/107587402