对于写程序要注意:要能在面试官的提示下把代码写出来(把思想实现的能力)!还要注意边界检查!递归找到出口!

开场来个简单字符串匹配

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说起的更多相关文章

  1. 【Java面试】基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...

  2. java面试| 精选基础题(3)

    每天进步一点点,距离大腿又近一步! 阅读本文大概需要6分钟 系列文章 java面试| 精选基础题(1) java面试|精选基础题(2) 1.float f=3.4;是否正确? 答:不正确,编译无法通过 ...

  3. java面试| 精选基础题(2)

    关注微信公众号"java从心",置顶公众号 每天进步一点点,距离大腿又近一步! 阅读本文大概需要6分钟 继续挖掘一些有趣的基础面试题,有错望指出来哈,请赐教~ 1.包装类的装箱与拆 ...

  4. Android逆向-java代码基础

    作者:I春秋作家——HAI_ 0×00 前言 看这篇可以先看看之前的文章,进行一个了解.Android逆向-java代码基础(1)Android逆向-java代码基础(2) 之前看到有大佬用smali ...

  5. 003-Python3-基础语法-运行方式、代码基础要求、运算符[算数运算符、比较运算符、赋值运算符、位运算符、逻辑运算符、成员运算符、身份运算符]、运算符优先级

    一.基础语法 参看地址:https://www.runoob.com/python3/python3-tutorial.html 1.1.运行方式 1.文件方式 编写一个hello.py文件, pri ...

  6. PHP面试大全 基础篇100道问题

    2017年3月7日14:23:21 其实计划很久但是移植没时间去收集和处理弄成一个完整的文件 SVN地址: https://git.oschina.net/zxadmin/live_z 目前基础部分更 ...

  7. CMB面试准备-基础

    1.简述 private. protected. public. internal 修饰符的访问权限 private : 在类的内部才可以访问. protected : 保护成员,该类内部和继承类中可 ...

  8. 细节!重点!易错点!--面试java基础篇(二)

    今天来给大家分享一下java的重点易错点第二部分,也是各位同学面试需要准备的,欢迎大家交流指正. 1.字符串创建与存储机制:当创建一个字符串时,首先会在常量池中查找是否已经有相同的字符串被定义,其判断 ...

  9. 细节!重点!易错点!--面试java基础篇(一)

    今天来给大家分享一下java的重点易错点部分,也是各位同学面试需要准备的,欢迎大家交流指正. 1.java中的main方法是静态方法,即方法中的代码是存储在静态存储区的. 2.任何静态代码块都会在ma ...

随机推荐

  1. PHP & “Data” URL scheme(转)

    基本上所有的对文件操作的API, 都迁移到的了PHP stream上, 所以, 绝大部分对文件操作的API都是支持Data URL的. 当某个API需要操作对象是文件的时候, 我们其实是可以采用Dat ...

  2. scrapy之中间件

    中间件的简介 1.中间件的作用 在scrapy运行的整个过程中,对scrapy框架运行的某些步骤做一些适配自己项目的动作. 例如scrapy内置的HttpErrorMiddleware,可以在http ...

  3. 我不想用for循环

    为什么要挑战自己在代码里不写for loop?因为这样可以迫使你去使用比较高级.地道的语法或库.文中以python为例子,讲了不少大家其实在别人的代码里都见过.但自己很少用的语法. 这是一个挑战.我要 ...

  4. 为什么说”人生苦短,我用python“?

    本文不扯什么大道理,只是先介绍Python的背景,然后从实用的角度出发举一两个真实栗子. ​ 首先要想了解要一门语言的好坏,或者为什么招程序员喜欢(卧槽,原来程序员喜欢不是女朋友?)我们的先从语言的产 ...

  5. Java集合—List(转载)

    本篇文章将集中介绍了List集合相比Collection接口增加的一些重要功能以及List集合的两个重要子类ArrayList及LinkedList. 一.List集合 List作为Collectio ...

  6. PHP SPL使用方法和他的威力

    什么是SPL,如何使用,他有什么作用,下面我我们就讲讲PHP SPL的用法 SPL,PHP 标准库(Standard PHP Library) ,此从 PHP 5.0 起内置的组件和接口,并且从 PH ...

  7. 浅析Spring AOP

    在正常的业务流程中,往往存在着一些业务逻辑,例如安全审计.日志管理,它们存在于每一个业务中,然而却和实际的业务逻辑没有太强的关联关系. 图1 这些逻辑我们称为横切逻辑.如果把横切的逻辑代码写在业务代码 ...

  8. Connecting to a Remote Serial Port over TCP/IP

    https://www.acmesystems.it/socat This article illustrates how to realize a lan to serial gateway Rem ...

  9. Winter-2-STL-B Brackets 解题报告及测试数据

    Time Limit:2000MS     Memory Limit:65536KB Description Given a string consisting of brackets of two ...

  10. Android开发环境配置到第一个程序所遇到的问题

    1.安装顺序 先jdk,最后是1.7或1.8吧,配置环境变量:然后是sdk,配置环境变量:sdk安装之后即可以通过SDK Manager进行其他包的安装. 2.sdk及其他包的安装,以一张图表示,对于 ...