【智能查询】:关于智能查找输入的算法实现1
来源:互联网 发布:linux 当前shell 编辑:程序博客网 时间:2024/05/01 02:29
问题描述
在生活中我们总有这样的情况,比如说不记得某个单词,然后就大概的去查找该单词,这样就会导致输错的情况,这篇文章实现的算法就是想让用户在输错的情况下如何也能智能匹配到该单词。举个例子:字符串为apple 我输入了pplea,这样五个字母都是一致的,只是顺序不一样而已,因此能够认为该用户输对了单词,进行准确的查找可以参照:刘汝佳 算法入门 字符串模块等章节
解题思路
对字符串进行处理,想要查找到混序输入的单词,如果和原单词进行匹配查找,肯定够呛,这样我就想到了一个很巧妙的方法,对单词进行排序,这样一个混乱的单词都能进行排序得到一个一致的序列,这样最后就能够进行模式匹配了~
举个例子:
对apple排序会得到 aelpp,就是会把小的字符放前面~~
录入字典模块,我不是在控制台录入的,而是在txt文档中录入的,参考我一篇博文:
http://blog.csdn.net/qq_23100787/article/details/48545455
源代码:
//这个程序的目的是给出一个字符串字典,然后输入乱序字符串,能否在字符字典里面找到该有的字符串// author:seen// 2015-09-20#include <iostream>#include <string>#include <algorithm>#include <fstream>using namespace std;struct Photograph{ //保存单词 string s; }P[100];struct RES{ //保存单词每个字母排序后的结果 string s;}R[100];string SelectS(string s){ //把单个单词排序,并把排序结果返回 string s_temp = s; for(int i=0;i<s_temp.length();i++){ for(int j=i+1;j<s_temp.length();j++){ if(s_temp[j]<s_temp[i]){ char temp = s_temp[i]; s_temp[i] = s_temp[j]; s_temp[j] = temp; } } } return s_temp;}int main(){ //这段代码是录入字典的过程 fstream f("d:\\数据.txt",ios::in); if(!f) cout<<"mistake"; int count=0; while(!f.eof()){ f>>P[count].s; R[count].s = SelectS(P[count].s); //把录入的单词排序保存进结果结构体 count++; } f.close(); //导入数据查看 cout<<"导入的数据形成的字典为"<<endl; for(int i=0;i<count;i++) cout<<P[i].s<<endl; // 接下来是比对的过程 string temp; cin>>temp; for(i=0;i<count;i++){ if(SelectS(temp)==R[i].s){ cout<<"已经找到,其原单词为"<<P[i].s<<endl; return 0; } } return 0;}
程序运行结果
数据字典截图:
程序运行:
0 0
- 【智能查询】:关于智能查找输入的算法实现1
- 关于ExtJs智能联想输入框的实现方法
- 关于英文智能截断的实现方法
- C语言的萤火虫智能算法实现
- 关于智能的思考
- 智能语音输入查询天气app
- 智能电视TV开发---输入框的迭代实现
- 智能指针的实现
- 智能指针的实现
- 智能指针的实现
- 智能的实现方式
- 智能指针的实现
- 智能指针的实现
- 智能输入法的实现
- 关于《智能Web算法》一书环境配置的问题
- jquery实现input输入框输入值自动智能提示的实现
- 最近关于智能实现一些零碎的想法
- 关于安卓智能聊天机器人simsimi的实现方法
- OC-字符串的使用
- TCP/IP(1)链路层
- http协议的post请求
- GC JVM垃圾回收
- Activiti入门教程五(详解ProcessEngine的创建)
- 【智能查询】:关于智能查找输入的算法实现1
- 本地SVN服务器搭建20150920
- 理解Java异常转译的强大
- AndroidStudio配置SVN以及使用代码管理
- 笔记
- 黑马程序员-java基础-IO流
- 【软考】-UML图
- 路径中 斜杠/和反斜杠\ 的区别
- Lecture3-1Learning with different data label