编程测评
来源:互联网 发布:php与java工资比较 编辑:程序博客网 时间:2024/06/07 22:46
问题如下
代码如下
#include <bits/stdc++.h>using namespace std;//KMP算法 int KMP(const string& target,const string& pattern){ const int target_length = target.size(); const int pattern_length = pattern.size(); int * overlay_value = new int[pattern_length]; overlay_value[0] = -1; int index = 0; for(int i=1;i<pattern_length;++i) { index = overlay_value[i-1]; while(index>=0 && pattern[index+1]!=pattern[i]) { index = overlay_value[index]; } if(pattern[index+1]==pattern[i]) { overlay_value[i] = index +1; } else { overlay_value[i] = -1; } } //match algorithm start int pattern_index = 0; int target_index = 0; while(pattern_index<pattern_length&&target_index<target_length) { if(target[target_index]==pattern[pattern_index]) { ++target_index; ++pattern_index; } else if(pattern_index==0) { ++target_index; } else { pattern_index = overlay_value[pattern_index-1]+1; } } if(pattern_index==pattern_length) { return target_index-pattern_index; } else { return -1; } delete [] overlay_value;}int main(){ int n; string s; vector<string> vec; while(cin>>n){ for(int i = 0;i<2*n;++i){ cin>>s; vec.push_back(s); } string a[1000]; vector<string>::iterator it=vec.begin(); for(int i = 0;i<2*n&&it!=vec.end();++i,++it){ a[i]=*it; } for(int i =0;i<2*n;i+=2){ cout<<KMP(a[i],a[i+1])<<endl; } } return 0;}
代码只是找出了第一个与字符相匹配的字符串位置,还是有缺陷的,需要改进。
阅读全文
0 0
- 编程测评
- 2017实习生在线测评编程题
- 链家在线测评编程题
- 阿里2018测评编程题——小明购物。。。
- 硬件测评
- 职业生涯测评
- 职业测评
- 测评系统
- 职业测评
- 测评总结
- 职业测评
- OneAPM测评
- CPU测评
- 前任测评
- AnyviewC编程作业系统——支持程序可视化运行、调试和测评
- 2018年春季阿里前端工程师实习岗在线测评编程题总结
- 刚网上测评了算法工程师的笔试,才发现自己的编程有多烂!
- 中国南方人才市场测评中心测评问卷
- 函数cvRound,cvFloor,cvCeil用法
- autowire异常的三个情况
- HttpClient使用代理IP
- Android系统架构简析
- 怕是学了假Python——()与[]
- 编程测评
- JavaScript浅拷贝与深拷贝浅析
- 1.3.10将算术表达式由中序表达式转为后序表达式(algs4)
- elasticsearch5.0.0安装笔记
- 打散一个二维数组的方法
- 微服务下事件驱动
- webpack.config.js的配置
- dmesg命令
- ios打包测试上架----之----上架教程