得到
  • 汉语词
  • 汉语典
当前位置 :
求判断字符串是否是拼音的成熟算法给定一个字符串如qiaodang,shuangyue等,用算法判断其是否是拼音或者拼音组合,什么语言都行,重点讲算法的实现给定一个连续的只包含字母的字符串如guangangei
3人问答
问题描述:

求判断字符串是否是拼音的成熟算法

给定一个字符串如qiaodang,shuangyue等,用算法判断其是否是拼音或者拼音组合,什么语言都行,重点讲算法的实现

给定一个连续的只包含字母的字符串如guangangei,可拆分成(guang,an,gei)符合,(guan,gang,ei)ei不能成字不符合,(guan,gan,gei)符合,(gu,ang,an,gei)符合.等多种组合,只要其中有1个组合里的子集全部符合拼音组合规则如(guan,gan,gei),就判定这个字符串是拼音字符串;如果拆分之后的组合没有1个符合拼音规则,如字符串hello,那么判定此字符串不是拼音字符串.

个人理解这个算法需要考虑字母前后的拼音匹配(建立拼音匹配模型),推导算法(如正向最大推导),失败后的回退(如guang,ang,ei失败后回退重新拆分guan,gang,ei,失败再重新拆分guan,gan,gei成功)

因需求比较急,算法实现有很多细节需考虑和测试,希望有达人分享已实现的算法,

吕良全回答:
  如果您是做输入法引擎的话,不能这么做的.任意的用户字母串都是拼音串.   例如:hello可以拆解为he‘l’l‘o四段,您通过拼音输入法输入的话是可以完成输入的.   所以要做的话应该采用自动机原理,或者树结构来存储以任意字符开头的全部合法拼音组合.   例如a开头的字符有a、ai、ao、an、ang,那么以a开头的树的形状如下,+表示叶子结点,即若遇到此叶子节点则序列此时结束为合法序列.   a   ion+   +++g   若给您一个字串是以a开头的,则从此树的根结点开始查找,例如序列为anaang   则起始查到an下一个字符为a所以已经无法再向下查找了,此时an即为一个拼音段,   接着下一个序列又是以a开头的所以继续在此树中查找,可以查到a此时a即为一个拼音段,   接下来重复这个过程,得到ang所以anaang的序列就被划分为了an'a'ang序列.   您只需要为26首字母建立树即可完成所有序列的匹配.
郭济回答:
  您好,理解您说的树结构算法了。我不是做输入法,需求是从每天几十万国际域名中筛选出符合国人习惯的拼音结构的域名。您的思路很好,我去试试算法实现
吕良全回答:
  呵呵,希望对您有用
最新更新
PC端 | 移动端 | mip端
百百课(baibeike.com)汇总了汉语字典,新华字典,成语字典,组词,词语,在线查字典,中文字典,英汉字典,在线字典,康熙字典等等,是学生查询学习资料的好帮手,是老师教学的好助手。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。

邮箱:  联系方式:

Copyright©2009-2021 百百课 baibeike.com 版权所有 闽ICP备2021002822号-13