hdu2030(汉字统计)java水过

hdu2030

思路:汉字机内码在计算机的表达方式的描述是,使用二个字节,每个字节最高位一位为1。计算机中, 补码第一位是符号位, 1 表示为负数,所以汉字机内码的每个字节表示的十进制数都是负数,且汉字占用两个字节结果要除以2,不要忘了

import java.util.*;
class Main{
	public static void main(String []args){
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		sc.nextLine();
		while(n-->0){
			String str=sc.nextLine();
			int numb=0;
			byte b[]=str.getBytes();//将字符串转化为字节数组
			for(int i=0;i<b.length;i++){
				if(b[i]<0){
					numb++;
				}
			}
			System.out.println(numb/2);
		}
	}
}

注:代码第十行换成这样:

byte b[]=new byte[str.length()];

b=str.getBytes();

就错了。因为str.length()是字符串的长短,而转化为字节时,一个字符串不一定对应一个字节数,所以错了。注意这个小小细节问题!

时间: 2024-10-22 19:21:16

hdu2030(汉字统计)java水过的相关文章

HDU2030 汉字统计

解题思路:一个汉字在字符串中是以两个负的字符形式存储的. 所以只要统计字符串中负的字符的个数并除以二就可以了. 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int maxn = 240000; 5 char str[maxn]; 6 int main() 7 { 8 int n; 9 scanf("%d", &n); 10 getchar(); 11 whil

hdu 2030 汉字统计 (java)

问题: java判断中文比较复杂. 汉字统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 29746    Accepted Submission(s): 16314 Problem Description 统计给定文本文件中汉字的个数. Input 输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本. Output 对

HDOJ 2030 汉字统计(借此题来谈谈ASCII码与汉字机内码)

ASCII码与汉字机内码: 在做HDOJ 2030 汉字统计一题中在讨论区看到有楼主发帖说汉字的ASCII码值为负数.但书中的ASCII码的范围又是0-255(其中0--127是国际通用标准码,128--255是拓展码). 经过请教大牛与查阅资料得,汉字并没有ASCII码,汉字是又机内码表示的,即ansi编码,是系统根据当前地区然后确定的当地编码,例如大陆的ansi编码就代表 国标码GBK编码.各个地区之间的机内码是有差异的. 汉字机内码在计算机的表达方式的描述是,使用二个字节,每个字节最高位一

HDOJ 汉字统计

汉字统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 28458    Accepted Submission(s): 15579 Problem Description 统计给定文本文件中汉字的个数. Input 输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本. Output 对于每一段文本,输出其中的汉字的个数,

HDU 2027 汉字统计

汉字统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 30230    Accepted Submission(s): 16588 Problem Description 统计给定文本文件里汉字的个数. Input 输入文件首先包括一个整数n,表示測试实例的个数,然后是n段文本. Output 对于每一段文本.输出当中的汉字的个数.

POJ Octal Fractions(JAVA水过)

题目链接:CLICK HERE~ 虽然java一下模拟水过,但是我看到别人的一段神奇代码,贴出和大家共享. import java.math.*; import java.util.*; class Main{ public static void main(String args[]){ Scanner cin = new Scanner(System.in); BigDecimal Eight = new BigDecimal(8); while(cin.hasNext()){ String

JAVA 水题

纯粹是让我来掌握熟练度的. 1.金蝉素数 某古寺的一块石碑上依稀刻有一些神秘的自然数. 专家研究发现:这些数是由1,3,5,7,9 这5 个奇数字排列组成的5 位素数,且同时去掉它的最高位与最低位数字后的三位数还是素数,同时去掉它的高二位与低二位数字后的一位数还是素数.因此,人们把这些神秘的素数称为金蝉素数,喻意金蝉脱壳之后仍为美丽的金蝉. 输出所有金蝉素数. ANSWER: 13597 53791 79531 91573 95713 package test; import java.util

NBUT 1118 Marisa&#39;s Affair (排序统计,水)

题意:每行给出一个人名和一个int值,人名可重复出现.要求对同一个人名统计int值,最大的先输出,若相同,则按照人名出现次数,若再相同,则按照人名字典序. 思路:输入完全部进行排序,写个比较函数传进去sort即可. 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 struct node 5 { 6 char nam[22]; 7 int lik; 8 int tim; 9 }a[5500]; 10 11 map<string,

NBUT 1114 Alice&#39;s Puppets(排序统计,水)

题意:给一棵人名树,按层输出,同层则按名字的字典序输出. 思路:首先对每个人名做索引,确定其在哪一层,按层装进一个set,再按层输出就自动排好序了. 1 #include <bits/stdc++.h> 2 using namespace std; 3 vector< set<string> > ord; //每层一个set,自动按照字典序排好了 4 map<string,int> mapp; //作哈希用 5 6 int main() 7 { 8 //fr