面试代码基础(一)从strstr说起
对于写程序要注意:要能在面试官的提示下把代码写出来(把思想实现的能力)!还要注意边界检查!递归找到出口!
开场来个简单字符串匹配
int strstr(char* target,char* source){
if(target==NULL||source == NULL){
return -1;
}
int i=0,j=0;
for(int i=0;i<strlen(source)-strlen(target)+1;i++){
for(int j=0; j<strlen(target); j++){
if(source[i] != target[j]){
break;
}
}
if(j=strlen(target)){
return i;
}
}
return -1;
}
一:排列&&组合模板
subsets 求所有的子集
{1,2,3}
[
[],//别忘了空
[1],
[2],
[3],
[1,2],
[1,3],
[2,3],
[1,2,3],
]
在这里采用深度优先的思想
注意去除重复的:利用pos标记
1.思想:思考递归,是一个树的结构,把1开头的找出来,把2开头的,把3开头的,递归你add了什么事情,递归回来要pop掉
把list的所有子集放在rst里。记得放入空。
vector<int> &subsets(vector<int> &rst,vector<int>& num,vector<int>& list,int pos){
rst.push_back(list);
for(int i=pos;i<num.size();i++){
list.push_back(num[i]);
subsets(rst,num,list,i+1);
list.pop_back();
}
}
2.扩展:带重复元素的子集,那么[1,2(2)]和[1,2(3)]就会产生重复
笨想法:在加入rst里查找是否包含!!
这样会浪费时间,有没有更方便快速的
要取相同的数必须连续的取,不允许跳过取,那么先要进行排序
a.对num排序!!!
b.跳过同样的数,这dfgui种情况不合法就跳过continue;
sort(num.begin(),num.end());
vector<int> &subsets(vector<int> &rst,vector<int>& num,vector<int>& list,int pos){ rst.push_back(list);
for(int i=pos;i<num.size();i++){
if(i != pos && num[i-1] == num[i]){
continue;
}
list.push_back(num[i]);
subsets(rst,num,list,i+1);
list.pop_back();
} }
pos [1,2,2]
[1]
pos=1;//下标是1
i=pos=1;
跳过pos往后取。
应该从pos这里开始往后取(包括pos)
但是pos没取 取pos后面的
发现i与i-1取值相同,跳过i
if(pos!=i && num[i] == num[i-1])
3.求回文分割
aab
思想 :假设aa之间有一个数#,ab之间有一个数&
那么4种情况,
取 #
取 &
取 #&
都不取!!!!!
相当于求两个数的所有子集
思考下代码怎么写?
面试代码基础(一)从strstr说起的更多相关文章
- 【Java面试】基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...
- java面试| 精选基础题(3)
每天进步一点点,距离大腿又近一步! 阅读本文大概需要6分钟 系列文章 java面试| 精选基础题(1) java面试|精选基础题(2) 1.float f=3.4;是否正确? 答:不正确,编译无法通过 ...
- java面试| 精选基础题(2)
关注微信公众号"java从心",置顶公众号 每天进步一点点,距离大腿又近一步! 阅读本文大概需要6分钟 继续挖掘一些有趣的基础面试题,有错望指出来哈,请赐教~ 1.包装类的装箱与拆 ...
- Android逆向-java代码基础
作者:I春秋作家——HAI_ 0×00 前言 看这篇可以先看看之前的文章,进行一个了解.Android逆向-java代码基础(1)Android逆向-java代码基础(2) 之前看到有大佬用smali ...
- 003-Python3-基础语法-运行方式、代码基础要求、运算符[算数运算符、比较运算符、赋值运算符、位运算符、逻辑运算符、成员运算符、身份运算符]、运算符优先级
一.基础语法 参看地址:https://www.runoob.com/python3/python3-tutorial.html 1.1.运行方式 1.文件方式 编写一个hello.py文件, pri ...
- PHP面试大全 基础篇100道问题
2017年3月7日14:23:21 其实计划很久但是移植没时间去收集和处理弄成一个完整的文件 SVN地址: https://git.oschina.net/zxadmin/live_z 目前基础部分更 ...
- CMB面试准备-基础
1.简述 private. protected. public. internal 修饰符的访问权限 private : 在类的内部才可以访问. protected : 保护成员,该类内部和继承类中可 ...
- 细节!重点!易错点!--面试java基础篇(二)
今天来给大家分享一下java的重点易错点第二部分,也是各位同学面试需要准备的,欢迎大家交流指正. 1.字符串创建与存储机制:当创建一个字符串时,首先会在常量池中查找是否已经有相同的字符串被定义,其判断 ...
- 细节!重点!易错点!--面试java基础篇(一)
今天来给大家分享一下java的重点易错点部分,也是各位同学面试需要准备的,欢迎大家交流指正. 1.java中的main方法是静态方法,即方法中的代码是存储在静态存储区的. 2.任何静态代码块都会在ma ...
随机推荐
- Appium+python移动端自动化测试-环境搭建(一)
搭建所在系统环境:Windows7版本64位系统 一.环境准备 jdk8.0.151 android-sdk_r20.3.4-windows python3.5 appium1.4.16.1 Node ...
- 用hashlib生成动态token
生成token: import timeimport hashlib token ='jdhfvasuiodfbhsjdbvaio' client_time = time.time() client_ ...
- 4.GIT安装
最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑.不过,慢慢地有人把它移植到了Windows上.现在,Git可以在Linux.Unix.Mac和Window ...
- 基于stm32CubeMX和keil5的stm32f103学习编程
0. 准备 先用st-link连接stm32核心板与PC,用于烧录 St-link Stm32 3.3V 3.3V GND GND SWDIO DIO SWCLK DCLK 再用USB串口 ...
- android 知识收集
1.无论是 Activity.BroadcastReceiver还是Service,只要是有长时间处理的任务,就需要重新开一个线程来处理,为什么会这样? 因为他们都是运行在主线程中的. 2.在使用Br ...
- Shiro-Base64加密解密,Md5加密
Shiro权限框架中自带的加密方式有Base64加密,MD5加密 在Maven项目的pom.xml中添加shiro的依赖: <dependency> <groupId>org. ...
- (0.1)windows下的mysql配置使用步骤
目录 1.基于windows平台的mysql项目场景 2.mysql数据库运行环境准备 3.下载mysql 4.通过Installer方式(即msi方式)安装mysql 5.卸载mysql ————— ...
- mysql监控优化(三)慢查询
顾名思义,慢查询日志中记录的是执行时间较长的query,也就是我们常说的slowquery,通过设--log-slow-queries[=file_name]来打开该功能并设置记录位置和文件名.慢查询 ...
- Jmeter(四)测试webservice脚本
1.有些非标准的wsdl文件导入到loadrunner时候会报错,这时候我们就能利用jmeter进行性能测试2.在soapui中新建已经soap项目,File---->new soapUI Pr ...
- UVA10341:Solve It(二分+math.h库)
题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68990#problem/E 题目要求:p*e-x+ q*sin(x) + r*co ...