问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-04-30 04:54

我来回答

2个回答

热心网友 时间:2023-10-14 09:46

如果您是做输入法引擎的话,不能这么做的。任意的用户字母串都是拼音串。
例如:hello可以拆解为 he‘l’l‘o四段,您通过拼音输入法输入的话是可以完成输入的。
所以要做的话应该采用自动机原理,或者树结构来存储以任意字符开头的全部合法拼音组合。
例如 a开头的字符有 a、ai、ao、an、ang,那么以a开头的树的形状如下,+表示叶子结点,即若遇到此叶子节点则序列此时结束为合法序列。
a

i o n +
+ + + g

若给您一个字串是以a开头的,则从此树的根结点开始查找,例如序列为anaang
则起始查到an下一个字符为a所以已经无法再向下查找了,此时an即为一个拼音段,
接着下一个序列又是以a开头的所以继续在此树中查找,可以查到a此时a即为一个拼音段,
接下来重复这个过程,得到ang所以anaang的序列就被划分为了an'a'ang序列。
您只需要为26首字母建立树即可完成所有序列的匹配。追问您好,理解您说的树结构算法了。我不是做输入法,需求是从每天几十万国际域名中筛选出符合国人习惯的拼音结构的域名。您的思路很好,我去试试算法实现

追答呵呵,希望对您有用

热心网友 时间:2023-10-14 09:46

没学过编程。。。
大概先写一个数组,每个元素写上不符合拼音标准或几个字断开的的组合或特征,如[od],[gy]
然后写个循环 每次按顺序提取两个字母 遍历那个数组 发现一样的时候就结束循环 提取这次循环的第一个字母和前面已经遍历过的字母 组成一个字符串
拼音的组合是有限的 再链接个数据库 把这段字符串在数据库中检索 然后就知道这一段是不是拼音了

之后继续循环追问谢谢,思路挺好,希望有人能分享已实现的算法

追答声母
b p m f d t n l g k h j q x zh ch sh r z c s y w

韵母
a o e i u v ai ei ui ao ou iu ie ve er an en in un vn ang eng ing ong
各编成一个数组

汉字读音是声母+韵母 等于一个字长度是2-5个字母
(声母长1-2韵母长1-3)

ganguang
假设是拼音 先读入第一个字母 如果是声母 再循环读入1到3位 必须在韵母数组内
有一个对应
而韵母之后必又是声母 继续循环读1-2次必须在声母数组内有一个对应 以下省略 直至校验完8次 因为名字最多4个字,最多4个声母4个韵母组合起来

再不对我也帮不了你了 毕竟没学过编程

热心网友 时间:2023-10-14 09:46

如果您是做输入法引擎的话,不能这么做的。任意的用户字母串都是拼音串。
例如:hello可以拆解为 he‘l’l‘o四段,您通过拼音输入法输入的话是可以完成输入的。
所以要做的话应该采用自动机原理,或者树结构来存储以任意字符开头的全部合法拼音组合。
例如 a开头的字符有 a、ai、ao、an、ang,那么以a开头的树的形状如下,+表示叶子结点,即若遇到此叶子节点则序列此时结束为合法序列。
a

i o n +
+ + + g

若给您一个字串是以a开头的,则从此树的根结点开始查找,例如序列为anaang
则起始查到an下一个字符为a所以已经无法再向下查找了,此时an即为一个拼音段,
接着下一个序列又是以a开头的所以继续在此树中查找,可以查到a此时a即为一个拼音段,
接下来重复这个过程,得到ang所以anaang的序列就被划分为了an'a'ang序列。
您只需要为26首字母建立树即可完成所有序列的匹配。追问您好,理解您说的树结构算法了。我不是做输入法,需求是从每天几十万国际域名中筛选出符合国人习惯的拼音结构的域名。您的思路很好,我去试试算法实现

追答呵呵,希望对您有用

热心网友 时间:2023-10-14 09:46

没学过编程。。。
大概先写一个数组,每个元素写上不符合拼音标准或几个字断开的的组合或特征,如[od],[gy]
然后写个循环 每次按顺序提取两个字母 遍历那个数组 发现一样的时候就结束循环 提取这次循环的第一个字母和前面已经遍历过的字母 组成一个字符串
拼音的组合是有限的 再链接个数据库 把这段字符串在数据库中检索 然后就知道这一段是不是拼音了

之后继续循环追问谢谢,思路挺好,希望有人能分享已实现的算法

追答声母
b p m f d t n l g k h j q x zh ch sh r z c s y w

韵母
a o e i u v ai ei ui ao ou iu ie ve er an en in un vn ang eng ing ong
各编成一个数组

汉字读音是声母+韵母 等于一个字长度是2-5个字母
(声母长1-2韵母长1-3)

ganguang
假设是拼音 先读入第一个字母 如果是声母 再循环读入1到3位 必须在韵母数组内
有一个对应
而韵母之后必又是声母 继续循环读1-2次必须在声母数组内有一个对应 以下省略 直至校验完8次 因为名字最多4个字,最多4个声母4个韵母组合起来

再不对我也帮不了你了 毕竟没学过编程

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑lol突然很卡怎么办啊电脑玩lolfps低怎么解决 危化品仓库有什么设备 香港中文大学2021-2022在河北,重庆最低录取分数线 ChaCheer 洽洽 南瓜子 盐焗味 500g-适用对象 老闫家小粒香南瓜子-适用对象 洽洽盐焗味南瓜子-适用对象 盐焗南瓜子里有添加明矾吗 老街口盐焗味南瓜子500g*2袋量大优惠休闲零食 一天走多少步可以减肥每天走多少步可以减肥 肉炖土豆需要炖多久时间 韩语是不是拼音文字啊? 这个字叫什么,知道的说一声,我不知道是不是那个拼音 汉语的拼音是不是罗马音 ye 怎么读 是不是拼音 拼音是怎么组成的(是不是声母表和韵母表就能拼出所有的汉字) 拼音是不是汉语的音译? 是否怎么拼音 不是的拼音怎么写不是的? 你是不是陌生字的拼音? 我苹果手机玩球球大作战为什么会卡顿 不是,拼音? 《王者荣耀》和《球球大作战》一共有多少玩家? 是不是拼音都是声母,那就是声母了? - 信息提示 是否的拼音 球球大作战是不是可以苹果安卓同时在线吗 是不两个字的拼音 腾讯手游助手球球大作战怎么设置一键交叉吐 怎样才可以让登录球球大作战的设备下线 为什么腾讯手游助手玩球球大作战一直卡着不动呢 怎样判断字符串是否由拼音组成 Sql 中的 存储过程 使用 买回来的牛肉煮烂的很快而且还不说水这种牛肉有问题吗? 小米note电量耗尽之后冲不进去电 充着电屏幕一会亮一会灭怎么办 小米note我把电用完了手机自动关机了,充不进去电,如何才能充进去电 丝绒衣服上面有霉点能去掉吗 红米note9怎么没有微信视频美颜? 银行面试时,考官问我我的职业规划是什么,该怎么回答? 银行网申职业规划怎么写? 银行工作如何进行职业规划? 银行校园招聘网申:职业规划如何填写? 去银行应聘,如果被问到未来三年的职业规划该怎么回答 office2016激活不了怎么办 thinkpad office 2016激活不了怎么办 脸上的暗疮为什么会发黑?怎么弄掉它? 额头发黑长痘(暗疮)怎么办 我的脸上有一个暗疮一直都好不了,都有一年了,看着有点发黑,老是能挤出白色的东西,怎么办? 青春痘发黑怎么办? 为什么我痘痘发黑 痘痘没有挤干干净就张愈合了 表面发黑 里面是硬的 像是一个小囊肿,这该怎么办?