import java.util.Scanner; public class B1057 { public static void main(String args[]){ Scanner sc=new Scanner(System.in); String str=sc.nextLine(); char ch[]=str.toLowerCase().toCharArray();//将字符串 字母全部变为小写 再转换成字符数组 int sum=0; for(int i=0;i<ch.length;i++){ if(ch[i]>='a'&& ch[i]<='z'){ sum=sum+ch[i]-'a'+1; } } int one=0; int zero=0; while(sum!=0){ if(sum%2==0) zero=zero+1; else one=one+1; sum=sum/2; } System.out.println(zero+" "+one); } } 运行结果:
但是好像有两组测试用例,还有一组是运行超时。这一组可以通过没超时。
思路:
step1:输入字符串统一变成小写
step2:存入字符数组ch里
step3:判断是否是字符'a'-'z',如果是就加,不是就不加
step4:sum转换成二进制
先把字符串里面的字符统一形式,可以是统一转换成大写字母,也可以统一转换成小写字母。但是要统一这样就只需要一个判断条件。第二,很明显用字符数组要好处理的多也方便很多,所以String类型我选择了转换成char 类型的数组。这里有个函数非常方便,就是str.toCharArray,str是String类型。
注意:最开始审题的时候,我就没有把(basic)当成输入,我以为是对PAT的说明,后来发现PAT(basic)每一个字符都是输入。