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

对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行。

[Hint:]从汉字机内码的特点考虑~

Sample Input

2
WaHaHa! WaHaHa! 今年过节不说话要说只说普通话WaHaHa! WaHaHa!
马上就要期末考试了Are you ready?

Sample Output

14
9

代码:

import java.util.*;

public class Main{
	public static void main(String args[]){
		Scanner cin=new Scanner(System.in);
		int n=cin.nextInt();
		String s;
		cin.nextLine();
		for(int i=0;i<n;i++){
			s=cin.nextLine();
			char[] a=s.toCharArray();
			int count=0;
			for(int j=0;j<s.length();j++){
				Character.UnicodeBlock ub = Character.UnicodeBlock.of(a[j]);
				if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS

						|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS

						|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A

						|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION

						|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION

						|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS)
					count++;
			}
			System.out.println(count);
		}
	}
}
时间: 2024-10-11 02:19:48

hdu 2030 汉字统计 (java)的相关文章

hdu 2030 汉字统计

本题链接:点击打开链接 本题大意: 求所输入字符串中汉字的个数. 本题思路: 在做此题时我也不知道汉子在计算机中是怎么存放的,经过查找资料知道,汉字是没有ASCΙΙ码的,汉字在计算机中使用两个字节存放,并且每个字节的最高位都是1,而在计算机中,字节最高位为符号位,1表示负数,故汉字机内码每个字节表示的十进制都是负数,所以需统计的便是有多少负数了,又因为每个汉字占两个字节,故可采取相应措施. 参考代码: #include<stdio.h> #include<string.h> cha

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

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

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 对于每一段文本.输出当中的汉字的个数.

杭电2030 汉字统计

链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2030 题目思路: 1-- 一个汉字在字符串中是以两个负的字符形式存储,所以本题只要把字符串中负字符的个数找出来,再 除以2 就OK了. 2--汉字机内码在计算机的表达方式的描述是,使用二个字节,每个字节最高位一位为1. 计算机中, 补码第一位是符号位, 1 表示为 负数, 所以 汉字机内码的每个字节表示的十进制数都是负数. 代码: #include <iostream> #include&

hdu 2017 字符串统计(java)

问题: 本题主要是对字符串输入的处理: String a=cin.next(); char [] s=a.toCharArray(); 字符串统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 51624    Accepted Submission(s): 28327 Problem Description 对于给定的一个字符串,统

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.

HDoj 2030 汉字统计

Problem Description 统计给定文本文件中汉字的个数. Input 输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本. Output 对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行. [Hint:]从汉字机内码的特点考虑~ Sample Input 2 WaHaHa! WaHaHa! 今年过节不说话要说只说普通话WaHaHa! WaHaHa! 马上就要期末考试了Are you ready? Sample Output 14 9 Author lcy

hdu 2030 统计汉字个数

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

hdu 2030~2034

hdu 2030 统计给定文本文件中汉字的个数.首先知道汉字机内码是两个负数ASCII码组成.然后就水了 1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 int n,i,len,j,count; 6 char a[1000]; 7 while(scanf("%d",&n)!=EOF) 8 { 9 getchar(); 10 for (i=1;i<=n;i++) 11 { 12