PAT B1057 java

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值