`
quadrapop
  • 浏览: 5424 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

宋词密码在手3秒作诗赋词 Java版本 闲来蛋疼练练手

阅读更多
最近看了一篇文章,说一网友算出99个宋词常用语,然后根据给出的数字找到相应的词就可以在3秒内作诗赋词,觉得挺有意思的,给出一组数字然后自己去找太慢了,于是自己写了一个类,呵呵,纯属练手
http://blog.sina.com.cn/s/blog_51508bd70102dt7j.html 这是那篇文章

代码很简单,就是切割字符串,递归,循环
public class EasyDecode {
	
	private static Map<String, String> data = new HashMap<String, String>();
	
	/**
	 * 读取文件初始化数据
	 * 按行读取
	 */
	public static void init(){
		File file=new File("F:/code.txt");
		BufferedReader reader=null;
		try {
			reader = new BufferedReader(new FileReader(file));
			String tempString=null;
			while((tempString=reader.readLine())!=null){
				String[] sTemp = tempString.split(" ");
				data.put(sTemp[0], sTemp[1]);
			}
			reader.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally{
			if(reader!=null){
				try {
					reader.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	/** main方法
	 * @param args
	 */
	public static void main(String[] args) {
		init();
		String s="251182408"; //输出“相逢相思时候不见西风” 本人qq,好悲伤啊
		Decode(s);
	}
	
	/** 递归切割
	 * @param numStr
	 */
	public static void Decode(String numStr){
		String code =strSplit(numStr);
		if(!numStr.equals("")){
			Decode(code);
		}
	}
	
	/** 分割字符串,切割三次 大数字优先(如"226" 22是一个码,2是一个码,226应该分割为22,6而不是2,2,6)
	 *  返回切割后的字符串
	 *  宋词高频词汇和数字代码对应有限 ,出现数字0时情况比较特殊
	 *  如: 19880505 切割拼接最终为 1988505
	 *      22006 切割拼接最终为 226
	 * @param str
	 * @return
	 */
	public static String strSplit(String str){
		String strReturn="";
		for(int i=3;i>0;i--){
			if(str.length()>=i){
				String stemp = str.substring(0,i);
				if(findKey(stemp)){
					if(str.length()!=1){
						strReturn = str.substring(i,str.length());
					}
					break;
				}else{
					if(i==1){
						strReturn = str.substring(1,str.length());
					}
				}
			}
		}
		return strReturn;
	}
	
	
	/** 循环map,根据键查找值 返回布尔值
	 * @param keyIn 键
	 * @return
	 */
	public static boolean findKey(String keyIn){
		boolean isHere=false;
		for(Iterator<String> i=data.keySet().iterator();i.hasNext();){
			String st= (String)i.next();
			if(st.equals(keyIn)){
				System.out.print(data.get(keyIn));
				isHere=true;
				break;
			}
		}
		return isHere;
	}
	
}

那个txt里面就是一些词和数字的对应
如:
1 空
21 一笑
41 深处
纯属自我娱乐,作个记录,呵呵
0
1
分享到:
评论

相关推荐

    三国演义诗词鉴赏.doc

    在这首诗中,他用“煮豆燃豆萁,豆在釜中泣”的比喻,将豆与萁的悲惨关系比作兄弟间的手足相残。曹植通过这一形象生动的比喻,深刻揭露了封建社会中权力斗争的残酷和家族内部的悲剧,令人痛惜不已。 杜甫的《八阵图...

    三年级第二学期综合实践活动总结.doc

    在春天的背景下,他们以诗歌的形式歌唱春天,重新赋词熟悉的歌曲,以此表达对大自然的热爱,展现了活泼的童心和对美的追求。 【端午节主题活动】 端午节期间,学生们围绕“吃粽子,长学问”的主题进行了深入探究。...

    初中语文 古诗文赏析 姜夔《齐天乐 蟋蟀》原文、注释、译文及赏析(附作者简介).doc

    词的创作背景位于南宋宁宗庆元二年(1196年),彼时,姜夔与友人张功父共赋词作,将个人的愁思与对生活的感慨融入字里行间。开篇提到的“庾郎先自吟愁赋”,庾郎即是南北朝时期的文学家庾信,其诗作多带有浓重的哀愁...

    信息资源管理(马费成_赖茂生)笔记

    3. 赋词标引法 信息表示语言包括置标语言、元数据、信息检索语言等。 元数据是关于数据的有结构的数据描述,或者说,定义和描述其他数据的数据。元数据分为三种基本类型: 1. 知识描述型元数据 2. 结构型元数据 3...

    信息管理概论网上作业答案解析.doc

    6. **主题标引方法**:抽词标引、赋词标引和分类标引是主题标引的基本方法。 7. **信息描述程序**:包括查重、描述、标引和复核输入系统等步骤。 8. **布尔逻辑算符**:AND、OR和NOT是常用的布尔逻辑运算符,用于...

Global site tag (gtag.js) - Google Analytics