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)每一个字符都是输入。