牛客巅峰赛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;} } }
全部评论
(5) 回帖