1. 程式人生 > >PAT——1057. 數零壹

PAT——1057. 數零壹

charat 表示 大小 轉化 println .cn 字母 amp www

給定一串長度不超過105的字符串,本題要求你將其中所有英文字母的序號(字母a-z對應序號1-26,不分大小寫)相加,得到整數N,然後再分析一下N的二進制表示中有多少0、多少1。例如給定字符串“PAT (Basic)”,其字母序號之和為:16+1+20+2+1+19+9+3=71,而71的二進制是1000111,即有3個0、4個1。

輸入格式:

輸入在一行中給出長度不超過105、以回車結束的字符串。

輸出格式:

在一行中先後輸出0的個數和1的個數,其間以空格分隔。

輸入樣例:

PAT (Basic)

輸出樣例:

3 4



 1 package com.hone.basical;
 2 import java.util.Scanner;
3 /** 4 * 原題目:https://www.patest.cn/contests/pat-b-practise/1057 5 * @author Xia 6 * 思路:先將字符串轉化為小寫 7 * 但是:竟然有一個測試點超時!!! 8 */ 9 10 public class basicalLevel1057countZeroOne { 11 12 public static void main(String[] args) { 13 Scanner in = new Scanner(System.in); 14 String words = in.nextLine().toLowerCase();
15 int sum = 0; 16 int one = 0; 17 int zero = 0; 18 for (int i = 0; i < words.length(); i++) { 19 if (‘a‘<=words.charAt(i)&&words.charAt(i)<=‘z‘) { 20 int m = words.charAt(i)-‘a‘+1; 21 sum += m; 22 }
23 } 24 while(sum!=0){ 25 if (sum%2==0) 26 zero++; 27 else 28 one++; 29 sum = sum/2; 30 } 31 System.out.println(zero+" "+one); 32 } 33 }

PAT——1057. 數零壹