牛客巅峰赛S2青铜组题解Java版本
牛客巅峰赛S2青铜组题解Java版本
3.
打表找规律,求字符串的二进制是否全是'1',循环除2取余,如果余数为0则为偶数返回false。
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param n string字符串 三角形的长和高
* @return bool布尔型
*/
public boolean judge (String n) {
// write code here
int len = n.length();
if(((n.charAt(len - 1) - '0')&1)==0){return false;}
String[] newN = {n};
while(!newN[0].equals("0")){
boolean isRestOne = div(newN[0], newN);
if(!isRestOne){return false;}
}
return true;
}
private boolean div(String n, String[] newN){
if(n.equals("1")){newN[0]="0";return true;}
char[] chs = n.toCharArray();
int len = chs.length;
int rest = 0;
StringBuilder sber = new StringBuilder();
for(int i = 0; i < len; ++i){
rest = rest * 10 + chs[i] - '0';
int diver = rest / 2;
rest = rest % 2;
sber.append(diver);
}
// System.out.println(n);
if(sber.charAt(0) == '0'){
newN[0] = sber.substring(1, sber.length());
}else{
newN[0] = sber.toString();
}
if(rest == 0){return false;}
else{return true;}
}
}#笔试题目#
睿联技术公司福利 62人发布