xxige 2008-12-10 10:47
浏览 335
已采纳

拼音分割的思路请教

请教一个题目:



测试题目

拼音:zhongguorenminzhanqilaile

分割目标:zhong guo ren min zhan qi lai le

要求不使用第三方工具,自己给出合理算法。



可以告诉一下实现思路么?可以暂时不考虑特殊情况,比如xian之类



谢谢。。。

  • 写回答

3条回答 默认 最新

  • rednaxelafx 2008-12-10 11:12
    关注

    排好序的拼音表用二分查找的话效率也还可以接受吧?

    简单的实现方法就是把一个字所有可能的拼音都预先放在一个表(Java的话也就是数组了)里,注意按字母顺序排好序。由于汉语拼音可能出现前缀重叠的现象(e.g. zhe/zhen/zheng),不考虑特殊情况的话这里应该使用贪婪算法。把字符串从左向右扫描,当发现匹配时继续扫描,直到又变得不匹配或者遇到结尾为止。
    例如说,
    guoren
    从0位置开始,不断取substring来对拼音表做匹配
    0-0 g 没有匹配
    0-1 gu 有匹配,继续
    0-2 guo 有匹配,继续
    0-3 guor 没有匹配,记录下guo,并将下一轮扫描的起始位置设到3
    3-3 r 没有匹配
    3-4 re 有匹配,继续
    3-5 ren 有匹配,继续
    3-eof ren 遇到结尾,记录下ren,结束。
    如果输入的拼音有错误,那么同样在遇到字符串结尾的时候结束;遇到结尾时可以观察上一轮扫描是否有匹配,有匹配的时候记录,没有的话说明输入的拼音有错误,可以适当做些错误处理。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的