算法:五笔编码,如何根据输入的词条自动生成输入编码

一、想要实现的

最近做的一个五笔码表工具,想要实现根据用户输入的词条自动生成输入编码。
比如:
输入 我们 生成 trwu
输入 五笔基础知识 生成 gtay

二、五笔基础知识

五笔的所有输入编码都最多只有4个字母,规则是这样的:

  1. 一个字时,字的前三个编码对应字母,和最后一个编码应用字母
  2. 两个字时,取这两个字的前两个字根字母
  3. 三个字时,取前两个字的第一个字根,第三个字的前两个字根
  4. 四个或更多字时,取前三个字的第一个字根,最后一个字的第一个字根

我要处理的五笔码表是这样的:
前面是词条,后面是词条对应的输入码

工兵   aarg
戒掉  aarh
芭蕾舞 aarl
熙熙攘攘    aarr
芽接  aaru
戒指  aarx
工模  aasa
工棚  aase
工本  aasg
花草树木    aass
式样  aasu
荛   aat

三、如何实现

1. 获取字典

先从基础码表中筛选出一套单字字典来,满足以下几个条件:

  • 单字
  • 编码在2个以上(因为2字以上的词条,只需要前两个编码就能凑够五笔的4码)

我是这样实现的:

 let characterMap = new Map() // 新建一个字典this.dictMain.wordsOrigin.forEach(item => {if (item.word.length === 1&& item.code.length >= 2&& !characterMap.has(item.word)) // map里不存在这个字{ // 编码长度为 4 的单字        characterMap.set(item.word, item.code)}})

2. 获取每个字的编码数组

 let decodeArray = [] // 每个字解码后的数组表word.split('').forEach(ch => {// 查询每个字的编码,并放到数组中decodeArray.push(this.dictMain.characterMap.get(ch))})

我们的日子 得出的数组是这样

["trn", "wu", "rqy", "jjjj", "bb"]

3. 拼成输入码

获取到了输入编码的数组,如果字数大于4,只截取4个,前三个字的编码和最后一个字的编码。
只需要根据规则将它拼起来就好了。

let decodeArray = [] // 每个字解码后的数组表
let letterArray = word.split('')
if (letterArray.length > 4){ // 只截取前三和后一letterArray.splice(3,letterArray.length - 4)
}
letterArray.forEach(ch => {decodeArray.push(this.dictMain.characterMap.get(ch) || '')
})
let phraseCode = ''switch (decodeArray.length){case 0:case 1:breakcase 2: // 取一的前二码,二的前二码phraseCode =decodeArray[0].substring(0,2) +decodeArray[1].substring(0,2)breakcase 3: // 取一二前一码,三前二码phraseCode =decodeArray[0].substring(0,1) +decodeArray[1].substring(0,1) +decodeArray[2].substring(0,2)breakdefault: // 取一二三前一码,最后的一码phraseCode =decodeArray[0].substring(0,1) +decodeArray[1].substring(0,1) +decodeArray[2].substring(0,1) +decodeArray[decodeArray.length - 1].substring(0,1)}console.log(phraseCode, decodeArray)return phraseCode

最终的结果是这样:

四、实际应用效果

算法:五笔编码,如何根据输入的词条自动生成输入编码相关推荐

  1. Python实现输入电影名字自动生成豆瓣评论词云图(带GUI界面)小程序

    Python实现输入电影名字自动生成豆瓣评论词云图(带GUI界面)小程序 一.项目背景 电影逐渐成为人们生活的不可或缺的一部分,而了解一部电影的可以通过电影评分与大众推荐度,但以上的方式都太过于片面, ...

  2. VScode输入 !无法自动生成html模板问题

    问题: 遇到的问题:在VScode中新建一个html文件,输入 !,然后按回车或者Tab键都无法自动生成html模板 解决: 网上查了一下听说是改版了,需要输入 html:5 再回车才能生成html模 ...

  3. 输入示例,自动生成代码:TensorFlow官方工具TF-Coder已开源

    视学算法报道 编辑:魔王.陈萍 转载自公众号:机器之心 如何使编程更加便捷?最近,谷歌 TensorFlow 开源了一个帮助开发者写 TensorFlow 代码的程序合成工具 TF-Coder. 项目 ...

  4. python 自动输入验证码_python 自动生成验证码并 输入识别

    两种方法: 1: ll = [] # 空列表 for x in range(10): # 吧得到的九个数加到列表,验证码是一体的,,只能当成一个字符串 ll.append(str(x)) # 大写字母 ...

  5. Python实现输入电影名字自动生成豆瓣评论词云图!

    一.项目背景 电影逐渐成为人们生活的不可或缺的一部分,而了解一部电影的可以通过电影评分与大众推荐度,但以上的方式都太过于片面,了解一部电影的方法是通过已经观看完电影的人群的反馈,虽然电影评分和大众推荐 ...

  6. 管家婆有未记账的凭证怎么办_管家婆中输入单据是否自动生成凭证

    管家婆财贸系列产品都是自动生成凭证,在系统配置里面可以选择,自动接收进销存生成的凭证打勾就行了,如:填写了进货单或销售单,点保存后,他就会自动生成凭证传到总账这边,打开填制凭证,里面就可找到, 管家婆 ...

  7. 中文转化成拼音_五笔已经淘汰,拼音到达瓶颈,百度重拳出击,全新输入方式来袭!...

    不知道大家发现没有,中文输入法的发展历程,其实就是通过建立云词库,改进词汇,发展AI技术来改善拼音输入法的识别率,进而取代五笔输入法的过程.拼音取代五笔,根本原因是易用好学,只要会讲普通话就能打字,不 ...

  8. 计算机考试中英文打字题,五笔及中英文打字试题(2套)含答案.docx

    文档介绍: 五笔及中英文打字试题(2套)含答案.docx中英文打字试题(1)一. 填空题(每空1分,共10分)在打字键区的正屮央有8个键位,即左边的 键和右边的 键.这8个键位被称作基准键,是打字时手 ...

  9. ubuntu16LTS下现代五笔的使用

    现代五笔是一款不错的文字输入软件,主要是编码的思想比较优秀,结合了传统五笔和拼音的长处.上手快,输入更高效,用过都说好. ubuntu下可以自定义ibus输入法,所以你可以下载现在五笔码表,然后根据上 ...

最新文章

  1. 数字图像处理——第七章 小波和多分辨处理
  2. 保存数组_面试官:讲一讲你对据结构——数组、链表、栈、队列的理解
  3. leetcode 622. Design Circular Queue | 641. 设计循环双端队列(Java)
  4. Xshell中输入rz提示:-bash: rz: command not found
  5. php留言板记录ip,如何用php程序记录来访IP
  6. Docker PHP 扩展配置
  7. 超级终端软件测试工程师,超级终端是否可用来测试 RS485?
  8. win32开发(添加菜单)
  9. 修改app应用的图标与名字
  10. 桌面麒麟系统添加字体
  11. chrome regedit 崩溃_谷歌浏览器网页崩溃的解决方法
  12. Ajax中readyState和status
  13. 查SCI索引号和EI索引号的方法
  14. 测试基础知识考试题目(答案)
  15. MySQL 8.0原理与实战一网打尽,甲骨文数据库专家硬刚5年之作
  16. Java双亲委派模型是什么、优势在哪、双亲委派模型的破坏
  17. 600岁的故宫,已经越来越飘了!
  18. 时刻盯着手机的人,却没有近视一说,就是因为这两个小秘诀(公益分享类文章)
  19. 【Java】将数字金额转换为大写中文金额
  20. GB/T 17626.2-2018下载网址

热门文章

  1. ATtiny13与Proteus仿真-TM1637简单时钟仿真
  2. 英语三级笔译注意的要点
  3. Itext生成图表类型PDF
  4. php 获取用户访问真实IP方法
  5. 远程连接linux配置文件,Linux远程连接介绍及相关配置
  6. JavaScript数组遍历5 every方法
  7. 解决 error while loading shared libraries: libicui18n.so.63: cannot open shared object file
  8. ats系统的主要设备由服务器,ATS系统介绍讲解.ppt
  9. 黑苹果,Mac OS X如何使用USB数据线连接手机网络(没有网卡驱动时)
  10. 视频文件rpc服务器不可用,RPC服务器不可用怎么办