程序中要根据汉字的拼音缩写来查找相应的汉字,如"DN",查出的是"电脑".像这样的缩写有上百条,我的实现是用if语句或switch语句,这样假设查的是"ZY"(专业),程序就会匹配到最后才能匹配成功(按首字母升序排列).这样效率会低很多,不知道这样的问题又没有优化的算法?那位能给个事例呀,谢谢!

解决方案 »

  1.   

    把缩写存进数据库,然后用like来查询。
      

  2.   

    程序启动时先初始化一个HashTable,把所有汉字以拼音缩写为Key存入即可
      

  3.   

    或者用
    System.Collections.Specialized.StringDictionary
    其键被强类型为字符串,效率高些
      

  4.   

    将数据导入到hashtable或类似对象,直接用hashtable或类似方式查询。hashtable之类的查询速度应该算很快的,而且和数据的多数没有太大(也不是完全没有关系,但是远小于线性关系)关系,其算法的主要速度取决于产生hashcode的速度。
      

  5.   

    StringDictionary myCol = new StringDictionary();
    myCol.Add( "ZY", "专业" );
    //……
    string key = "ZY";
    string 汉字 = myCol[key];//专业
      

  6.   

    StringDictionary myCol可以声明为类成员,在程序启动时就初始化
      

  7.   

    只要词典不复杂,直接读到内存即可。
    如果词典过大。可以建立索引,比如a~z为一级索引。让后再有:a,ao,ba,bi.....
      

  8.   

    从实际看 直接用.net里的 字典类 好了