`
fxbly
  • 浏览: 3377 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

一个上机题

阅读更多
输入:一个txt文本文件
输出:字数总数
      排序后再输出
例如:文本的内容是:我爱大海,我爱蓝天
输出:字数总数是:6
       排序后:出现1次:大 海 蓝 天
               出现2次:我 爱
怎么实现呢?
急~~~~~~~~~~~~~~~~~~~~
分享到:
评论
9 楼 ganlisxn 2009-06-04  
哈哈,我出来了
8 楼 ibeits 2009-04-10  
用点面向对象思想:

package com.ib.test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class TestPool {

	public static void main(String[] args) throws FileNotFoundException{
		Scanner scan=new Scanner(new FileInputStream("f:/test.txt"));
		CharacterPool pool=new CharacterPool();
		while(scan.hasNextLine()){
			for(Character c:scan.nextLine().toCharArray()){
				pool.write(c);
			}
		}
		System.out.println("字数总数是:"+pool.getCountSize());
		int i=1;
		do{
			System.out.print("出现"+i+"次:");
			System.out.println(pool.toString());
			pool=pool.getNext();
			i++;
		}while(pool!=null);
	}
}

package com.ib.test;

import java.util.LinkedList;
import java.util.List;

class CharacterPool {

	private List<Character> pool = new LinkedList<Character>();
	private CharacterPool next=null;
	
	public void write(Character c){
		if(c<'\u4e00'||c>'\u9fa5'){
			return;
		}
		if(pool.contains(c)){
			pool.remove(c);
			if(next==null){
				next=new CharacterPool();
			}
			next.write(c);
		}else{
			pool.add(c);
		}
	}
	
	public CharacterPool getNext(){
		return next;
	}
	
	public int getSize(){
		return pool.size();
	}
	
	public int getCountSize(){
		return next==null?pool.size():pool.size()+next.getCountSize();
	}
	
	@Override
	public String toString(){
		return pool.toString();
	}
}

7 楼 reilost 2009-04-10  
用正则匹配呢?
我写的。。

public class CountDemo1 {   
    private static final int ONE = 1;   
  
    public static void main(String[] args) throws IOException {   
  
        Map charMap = new TreeMap();   
        StringBuffer sBuffer = new StringBuffer();   
        FileReader reader = new FileReader("c:\\1.txt");   
        BufferedReader br = new BufferedReader(reader);   
        String str = null;   
           
        String regex = "\\w+\\w|[\u4e00-\u9fa5]";   
                   
                while ((str = br.readLine()) != null) {   
            Matcher m = Pattern.compile(regex).matcher(str);   
            while (m.find()) {   
                String charactor = null;   
                charactor = m.group().toLowerCase();   
  
                Integer count = (Integer) charMap.get(charactor);   
  
                if (count == null) {   
                    count = 0;   
                }   
                charMap.put(charactor, ++count);   
            }   
  
        }   
  
        br.close();   
        reader.close();   
  
        List<Map.Entry<String, Integer>> infoIds = new ArrayList<Map.Entry<String, Integer>>(   
                charMap.entrySet());   
        Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {   
            public int compare(Map.Entry<String, Integer> o1,   
                    Map.Entry<String, Integer> o2) {   
                return (o2.getValue() - o1.getValue());   
            }   
        });   
        System.out.println("一共有"+infoIds.size()+"個漢字或單詞");   
        for (int i = 0; i < infoIds.size(); i++) {   
            String id = infoIds.get(i).toString();   
            Integer count = infoIds.get(i).getValue();   
            if (count >0 ) {   
                System.out.println(id);   
            }   
  
        }   
  
    }   
}  

6 楼 抛出异常的爱 2009-04-03  
aquleo 写道
package test.interview;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class TestFileHandler {

	public static void main(String[] args) {
		InputStream input = null;
		try {
			input = new FileInputStream(new File("f:\\test.txt"));
			int size = input.available();
			byte[] content = new byte[size];
			input.read(content);
			String tmp = new String(content, "UTF-8");
			HashMap<Character, Integer> map = new HashMap<Character, Integer>();
			for (int i = 0; i < tmp.length(); i++) {
				if (map.containsKey(tmp.charAt(i))) {
					Integer count = map.get(tmp.charAt(i));
					map.put(tmp.charAt(i), count + 1);
				} else {
					map.put(tmp.charAt(i), 1);
				}
			}

			Set<Character> set = map.keySet();
			Iterator<Character> it = set.iterator();
			while (it.hasNext()) {
				Character word = (Character) it.next();
				System.out.println("word is " + word + " , count is = " + map.get(word));
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				input.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}



感觉这题完全是考API...

仁者见仁,智者见智
如果用shell作
每个字后加个回车
引用












先排序
引用










正则
引用

爱爱
我我





再正则
引用

2爱
1大
1海
1蓝
1天
2我

排序
.......
循环
引用

2爱我
1大海蓝天
5 楼 aquleo 2009-04-03  
package test.interview;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class TestFileHandler {

	public static void main(String[] args) {
		InputStream input = null;
		try {
			input = new FileInputStream(new File("f:\\test.txt"));
			int size = input.available();
			byte[] content = new byte[size];
			input.read(content);
			String tmp = new String(content, "UTF-8");
			HashMap<Character, Integer> map = new HashMap<Character, Integer>();
			for (int i = 0; i < tmp.length(); i++) {
				if (map.containsKey(tmp.charAt(i))) {
					Integer count = map.get(tmp.charAt(i));
					map.put(tmp.charAt(i), count + 1);
				} else {
					map.put(tmp.charAt(i), 1);
				}
			}

			Set<Character> set = map.keySet();
			Iterator<Character> it = set.iterator();
			while (it.hasNext()) {
				Character word = (Character) it.next();
				System.out.println("word is " + word + " , count is = " + map.get(word));
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				input.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}



感觉这题完全是考API...
4 楼 Joo 2009-04-03  
恩,怎么让我想起了MapReduce,只要是将MR原理的时候就总会引用这个经典case
3 楼 jpork9678 2009-04-03  
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.HashMap;

/**
* 测试文件读取
* @author Administrator
*
*/
public class FileTest {
public static void main(String[] args){
try {
FileInputStream fis = new FileInputStream("c:/test.txt");
byte[] bt =new byte[1024];
fis.read(bt);
fis.close();
String filestr = new String(bt);
filestr =filestr.trim();
HashMap HZ = new HashMap();
for(int i=0;i<filestr.length();i++){
String temp =filestr.substring(i,i+1);
if(HZ.containsKey(temp)){
int cs =Integer.valueOf(HZ.get(temp).toString());
HZ.put(temp, cs+1);
}else{
HZ.put(temp, 1);
}
}
HZ.toString();
System.out.println(HZ.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2 楼 kimmking 2009-04-02  
无非就是统计每个字,第一次出现存起来,再出现,计数加1,
最后按出现次数来输出统计信息


两个问题:
1、文件足够大时,内存问题;中间信息存成文件,效率问题
2、文本中的“,”是怎么去掉的?? 符号都不统计吗?中文?英文?
1 楼 lxsgoodluck 2009-04-02  
原题是什么?
       排序后:出现1次:大 海 蓝 天
               出现2次:我 爱
是让统计的么?

相关推荐

    c#上机试题练习及答案

    在这些C#上机试题中,我们可以学习到多个核心知识点,包括条件判断、循环、异常处理、类与对象、属性、事件、数组操作、方法重载以及颜色操作等。下面我们将逐一深入探讨: 1. 条件判断与循环:题(1)要求找出1到...

    最全华为上机试题及部分答案

    在这个题目中,考生需要编写一个函数来比较两个数组,从数组最后一个元素开始逐个元素向前比较,如果两个数组的长度不等,则只比较较短长度数组的元素。函数返回比较中发现的不相等元素的个数。 代码实现如下: ```...

    ppt作业、ppt上机试题

    "ppt作业、ppt上机试题" 本资源是关于PowerPoint操作试题的作业,旨在让学生了解PPT基本操作方式和方法。下面是对每个试题的详细解释: 一、在打开的演示文稿中新建一张幻灯片,选择版式为“标题幻灯片”,并利用...

    天津市计算机一级考试上机试题

    Excel是Microsoft Office套件中的一个强大工具,用于组织、分析和可视化数据。考生需要熟悉基本的单元格操作,如选择、填充、合并单元格;掌握公式和函数的应用,例如SUM、AVERAGE、IF等,这些能够帮助计算和处理...

    浙江二级考试(C语言)上机部分试题汇总(内附答案)

    对于每一个上机试题,考生应深入理解其背后的编程思想,不断练习以提高编程技能。同时,理解并掌握错误处理和调试技巧,能在实际考试中节省时间,提升答题效率。 总的来说,浙江二级考试的C语言上机部分是对考生...

    遥感院复试上机试题

    这是人工智能的一个分支,涉及数据分类和模型建立。在遥感领域,模式识别可能用于: - 特征提取:从遥感图像中提取有意义的特征,如纹理、形状、色彩等。 - 分类算法:使用支持向量机(SVM)、随机森林、神经网络...

    二级VFP上机题库.rar

    【标题】"二级VFP上机题库.rar" 指的是一个针对全国计算机等级考试二级Visual FoxPro(VFP)科目的上机试题集合。这个压缩包包含了多个子文件,目的是帮助考生备考这一科目的实践操作部分。VFP是微软开发的一种关系...

    Dreamweaver上机考试题目-dreamweaver试题-网页制作试题.doc

    Dreamweaver上机考试题目-dreamweaver试题-网页制作试题.doc

    计算机等级考试二级VF上机试题汇总下载

    - **创建数据库**:如题所示,考生需要能够在指定的文件夹下创建一个新的数据库,并能将自由表添加到数据库中。 - **建立索引**:对表进行索引是为了提高数据检索速度。主索引是唯一的,而候选索引也要求唯一,...

    sql数据库上机试题三

    本题要求创建一个统计表 &lt;统计&gt;,包含雇员号、部门数量、工作年限等列,这需要学生具备基本的数据库设计知识,了解如何设计统计表结构。 六、存储过程 本题要求编写一个存储过程,存储过程名为 total,用于由 ...

    1000道 word excel 上机操作试题

    Microsoft Office管理器在屏幕上显示一个工具栏。工具栏包含Office各主要成员的图标。单击相应的图标,可以迅速启动需要的应用程序或在已启动的应用程序间进行切换;或者启动当前应用程序的第二个实例;或者在屏幕...

    计算机基础上机试题

    - **考试文件夹创建与命名**: 考生需要在指定的考试盘根目录下创建一个名为“学生证号+考生姓名”的文件夹,例如“2008010001张山”。所有考试文件必须保存在此文件夹内。 #### 二、文字录入(30分) - **内容录入*...

    sql数据库上机试题一

    SQL数据库上机试题一 本试题涵盖了SQL数据库的基本概念和操作,包括数据库设计、表结构设计、数据类型、SQL语句编写、存储过程和触发器等。通过完成本试题,学生将掌握SQL数据库的基本知识和技能,并且能够应用这些...

    Java编程上机试题

    Java编程上机试题是针对Java语言的实践操作题目集合,涵盖了广泛的Java基础知识和进阶技能。这些题目旨在帮助学习者巩固理论知识,提高动手能力,为实际开发工作打下坚实基础。Oracle上机试题则可能涉及到数据库管理...

    c#上机习题 c#上机习题

    在第一题中,我们需要创建一个控制台应用,利用特定公式计算`q`的近似值。这涉及到基本的输入输出操作,如`Console.WriteLine()`和`Console.ReadLine()`,以及数学运算。 2. **字符串处理与文件操作**:第二题涉及...

    winForm的上机试题

    本文将深入探讨WinForms在上机面试中的常见试题,并提供相关的知识点。 **1. WinForms基本控件** 面试中可能会涉及到对WinForms基本控件的理解和使用,例如Button、TextBox、Label、ListBox、ComboBox、...

    Excel上机操作试题(共83个)

    1. **工作簿与工作表**:每个Excel文件被称为一个工作簿,通常包含多个工作表,每个工作表由行列组成,用于存储和处理数据。 2. **单元格与引用**:数据存储在单元格中,每个单元格都有唯一的地址,如"A1"。单元格...

    华为上机试题 附上代码与题目

    华为作为全球知名的科技巨头,其招聘过程中的上机试题往往反映了公司在技术实践和创新能力上的高标准。本文将深入探讨华为上机试题所涵盖的知识点,尤其关注C++/C语言及其源代码的应用,帮助求职者更好地准备面试。 ...

    上机试题及答案

    华为上机考试题目及答案(答案是自己写的不一定准确),C/C++试题,题目是2013年2月到2013年6月共23道题目,另还有网上搜的几个题目。

    网络安全竞赛上机试题(简单·基础).pdf

    从提供的文件内容来看,这份文档是关于网络安全竞赛的上机试题,包含了基础题目及其说明。以下是一些详细的知识点: 1. 网络安全竞赛的环境和目的:文档开头提到,该套考试环境是虚拟搭建的,用于网络安全测试,并...

Global site tag (gtag.js) - Google Analytics