• 13-计算最长英语单词链


    大家经常玩成语接龙游戏,我们试一试英语的接龙吧:一个文本文件中有N 个不同的英语单词, 我们能否写一个程序,快速找出最长的能首尾相连的英语单词链,每个单词最多只能用一次。最长的定义是:最多单词数量,和单词中字母的数量无关。

    例如, 文件里有: Apple Zoo Elephant Under Fox Dog Moon Leaf Tree Pseudopseudohypoparathyroidism 最长的相连英语单词串为: apple - elephant – tree, 输出到文件里面,是这样的: Apple Elephant Tree

    统一输入文件名称:input1.txt, input2.txt 统一输出文件名称:output1.txt,output2.txt 程序需要考虑下列异常状况: 例如,文件不存在,你的程序会崩溃么,还是能优雅地退出并给用户提示信息? 如果文件没有任何单词、只有一个单词、没有可以首尾相连的单词,程序应该如何输出? 如果输入文件有一万个单词,你的程序能多快输出结果? 要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class Lane4 {
    
    	public static void main(String[] args) throws IOException {
    
    		String filename ="C:\Users\HP\Desktop\input.txt";
    		File  a=new  File(filename);
    	 //judeFileExists(a);
    	 if(judeFileExists(a))
    		{
    			danci(filename);
    		}
    	 else
    	    {}
    	 	
    		
    	}
    
    	public static void danci(String s) throws IOException {
    		   
    			BufferedReader br = new BufferedReader(new FileReader(s));
    			StringBuffer sb = new StringBuffer();
    			String text = null;
    			while ((text = br.readLine()) != null) {
    				sb.append(text);
    			}
    			br.close(); 
    			String str = sb.toString().toLowerCase(); 
    			String[] words = str.split("[^(a-zA-Z)]+"); 
    			StringBuffer yao = new StringBuffer();
    			String b1=words[0];
    			yao.append(b1);
    			yao.append(" ");
    			//System.out.println(b1);
    			String end=b1.substring(b1.length()-1,b1.length());
    		    //System.out.println(end);
    		   for(int i=1;i<words.length;i++)
    		   {  
    		    String start=words[i].substring(0,1);
    		    if(end.equals(start))
    		    {
    		    	end=words[i].substring(words[i].length()-1,words[i].length());
    		    	yao.append(words[i]);
    		    	yao.append(" ");
    		    }
    		   }
    		   
    		  // for( String a:words)
    		  // {
    			 //  System.out.println(a);
    		//   }
    		 //  System.out.println(yao.toString()); 
    		   File file =new File("C:\Users\HP\Desktop\output.txt");
    	        try {
    	             file.createNewFile();
    	        } catch (IOException e) {
    	           e.printStackTrace();      
    	       }
    	      
    	        try {
    	        	
    	        	  FileWriter fw =new FileWriter(file);
    	        	  fw.write(yao.toString());
    	        	  fw.flush();
    	        	  fw.close();
    	        }
    	        catch (IOException e) {
    		           e.printStackTrace();      
    		       }
    	     
    	}
    
    
    
    public static boolean judeFileExists(File file) {
    
        if (file.exists()) {
            System.out.println("请查看输出文件");
            return true;
        } else {
            System.out.println("文件不存在");
            return false;
        }
    }
    
    public static void judeDirExists(File file) {
    
        if (file.exists()) {
            if (file.isDirectory()) {
                System.out.println("dir exists");
            } else {
                System.out.println("the same name file exists, can not create dir");
            }
        } else {
            System.out.println("dir not exists, create it ...");
            file.mkdir();
        }
    
    }
    }
    

      

  • 相关阅读:
    Javascript在使用import 与export 区别及使用
    【repost】Python正则表达式
    js常见算法
    【repost】 JS变量重复声明以及忽略var 声明的问题及其背后的原理
    【repost】javascript callback
    【repost】js window对象属性和方法相关资料整理
    Donald Knuth
    前端知识体系
    【repost】让你一句话理解闭包(简单易懂)
    【repost】图解Javascript上下文与作用域
  • 原文地址:https://www.cnblogs.com/cuijunfeng/p/10988873.html
Copyright © 2020-2023  润新知