翻转子串 參与人数:1197时间限制:3秒空间限制:32768K 通过比例:35.03% 最佳记录:0 ms|8552K(来自 ) 题目描写叙述 假定我们都知道很高效的算法来检查一个单词是否为其它字符串的子串.请将这个算法编写成一个函数.给定两个字符串s1和s2.请编写代码检查s2是否为s1旋转而成.要求仅仅能调用一次检查子串的函数. 给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成.字符串中字符为英文字母和空格,区分大写和小写,字符串长度小于等于1000. 測试例子: "H…
反转子串 牛客网 程序员面试金典 C++ Python 题目描述 假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串.请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数. 给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成.字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000. 测试样例: "Hello world","worldhello " 返…
原串反转 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量). 给定一个string iniString,请返回一个string,为翻转后的字符串.保证字符串的长度小于等于5000. 测试样例: "This is nowcoder" 返回:"redocwon si sihT" C++ class Reverse { public: //run:4ms memor…
起因 写在开头,脑袋铁定秀逗了,历时20多天,刷完了leetcode上面151道题目(当然非常多是google的),感觉自己对算法和数据结构算是入门了,但仍然还有非常多不清楚的地方,于是有了对于每道题目写分析的冲动. 只是在看到leetcode上面的文章之后,决定先从翻译入手,顺带再写写自己做题的心得体会. 今天是第一篇:程序猿面试技巧. 假设你主修计算机科学.那么在你工作的时候会碰到非常多有难度的编程问题.当你去找工作的时候,你会有非常多的面试.而面试官通常非常喜欢问你非常多技术性的问题,下面…
在Java语言中.当实例化对象时.对象所在类的全部成员变量首先要进行初始化,仅仅有当全部类成员完毕初始化后,才会调用对象所在类的构造函数创建对象.    Java程序的初始化一般遵循以下三个原则(以下三原则优先级依次递减):(1)静态对象(变量)优先于非静态对象(变量)初始化,当中,静态对象(变量)仅仅初始化一次,而非静态对象(变量)可能会初始化多次. (2)父类优先于子类进行初始化.(3)依照成员变量定义顺序进行初始化. 即使变量定义散布于方法定义之中,它们依旧在不论什么方法(包含构造函数)被…
AOP(Aspect-Oriented Programming.面向切面编程)是对面向对象开发的一种补充,它同意开发者在不改变原来模型的基础上动态地改动模型从而满足新的需求.比如.在不改变原来业务逻辑模型的基础上能够动态地添加日志.安全或异常处理的功能. 以下介绍一个在Spring中使用AOP编程的简单样例. (1)创建一个接口以及实现这个接口的类.TestAOPIn.java内容例如以下所看到的. public interface TestAOPIn{ public void doSometh…
在Java语言中.字符串起着非常关键的数据.字符串的声明与初始化主要有例如以下两种情况:(1) 对于String s1=new String("abc")语句与String s2=new String("abc")语句,存在两个引用对象s1.s2,两个内容同样的字符串对象"abc".它们在内存中的地址是不同的.仅仅要用到new总会生成新的对象. (2) 对于String s1 = "abc"语句与String s2 = &qu…
前言 因为疫情的影响,现在都变成金五银六了.为了方便大家,在此开一个程序猿面试系列.总结各大公司所问的问题,希望能够帮助到大家,适合初中级java程序猿阅读. 1. Java类实例化时,JVM执行顺序? 正确的顺序如下: 1父类静态代码块 2父类静态变量 3子类静态代码块 3子类静态变量 4父类成员变量赋值 5父类构造方式开始执行 6子类成员变量赋值 7子类构造方式开始执行 需要注意的地方是静态变量和静态代码块谁在前面谁先执行. 看一段代码示例: package com.jdk.learn; /…
二进制小数 牛客网 程序员面试金典 题目描述 有一个介于0和1之间的实数,类型为double,返回它的二进制表示.如果该数字无法精确地用32位以内的二进制表示,返回"Error". 给定一个double num,表示0到1的实数,请返回一个string,代表该数的二进制表示或者"Error". 测试样例: 0.625 返回:0.101 C++ class BinDecimal { public: //run:3ms memory:484k string printB…
字符串压缩 牛客网 程序员面试金典 C++ Python 题目描述 利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能.比如,字符串"aabcccccaaa"经压缩会变成"a2b1c5a3".若压缩后的字符串没有变短,则返回原先的字符串. 给定一个string iniString为待压缩的串(长度小于等于10000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串. 测试样例 "aabcccccaaa&qu…
空格替换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个方法,将字符串中的空格全部替换为"%20".假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成. 给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string. 测试样例: "Mr John Smith",13 返回:"Mr%20John%20Smith&quo…
确定字符互异 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符.保证字符串中的字符为ASCII字符.字符串的长度小于等于3000. 测试样例: "aeiou" 返回:True "BarackObama" 返回:False C++ class Di…
确定两串乱序同构 牛客网 程序员面试金典 C++ Python 题目描述 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串.这里规定大小写为不同字符,且考虑字符串中的空格. 给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同.保证两串的长度都小于等于5000. 测试样例: "This is nowcoder","is This nowcoder" 返回:true…
小屁孩曾经有过4年的招聘经验,期间见识了各种类型的程序猿:有大牛.有菜牛:有功成名就,有苦苦挣扎不知方向.等后来做了一枚程序猿之后发现,HR眼中的程序猿和程序猿中的HR都是不一样的.有感与此,从HR的角度,跟大家分享一些个人关于程序猿面试的注意事项,给大家找工作提供一些参考.毕竟大牛只是少数.因为很多人对人事工作不了解,所以不适用人事装逼的术语,而是用大白话来描述. 1.招人是HR说了算还是用人部门说了算: 这个问题很多人都想知道,但是每个公司的情况都不一样,根据公司创始时间.规模.发展阶段等等…
Java与C++都是面向对象语言,都使用了面向对象思想(比如封装.继承.多态等),因为面向对象有很多非常好的特性(继承.组合等),使得二者都有非常好的可重用性. 须要注意的是,二者并不是全然一样,以下主要介绍其不同点: (1)       Java为解释性语言,运行的过程为:源码经过Java编译器编译成字节码,然后由JVM解释运行.而C/C++为编译型语言,源码经过编译和链接后生成可运行的二进制代码.因此,Java的运行速度比C/C++慢,可是Java能够跨平台运行,而C/C++不能. (2) …
小屁孩曾经有过4年的招聘经验,期间见识了各种类型的程序猿:有大牛.有菜牛:有功成名就,有苦苦挣扎不知方向.等后来做了一枚程序猿之后发现,HR眼中的程序猿和程序猿中的HR都是不一样的.有感与此,从HR的角度,跟大家分享一些个人关于程序猿面试的注意事项,给大家找工作提供一些参考.毕竟大牛只是少数.因为很多人对人事工作不了解,所以不适用人事装逼的术语,而是用大白话来描述. 1.招人是HR说了算还是用人部门说了算: 这个问题很多人都想知道,但是每个公司的情况都不一样,根据公司创始时间.规模.发展阶段等等…
<程序员面试金典(第5版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382252 内容简介 本书作者Gayle Laakmann McDowell是著名的软件从业者,曾担任谷歌资深面试官和招聘委员会成员,深谙世界顶尖科技公司的面试之道,与数百名求职者有过"交锋",洞悉面试成败的关键所在. 本书融萃了作者在世界顶尖科技公司长期从事相关工作所积累的面试经验,涉及与面试相关的每个环节--大到剖析面试流程.详解经典的技…
组合和继承是面向对象中两种代码复用的方式. 组合是指在新类里面创建原有类的对象,反复利用已有类的功能.继承是面向对象的主要特性之中的一个,它同意设计人员依据其他类的实现来定义一个类的实现. 组合和继承都同意在新的类中设置子对象(subobject),仅仅是组合是显式的,而继承则是隐式的.组合和继承存在着相应关系:组合中的总体类和继承中的子类相应.组合中的局部类和继承中的父类相应. 二者的差别在哪里呢?首先分析一个实例.Car表示汽车对象,Vehicle表示交通工具对象,Tire表示轮胎对象.三者…
所谓笔记,就是比較个人的东西,把个人认为有点意思的东西记录下来~~ 程序猿面试宝典笔记(一)基本概念 程序猿面试宝典笔记(二)预处理.const和sizeof 程序猿面试宝典笔记(三)auto_ptr.递归 程序猿面试宝典笔记(四)面向对象.类型转换.static 程序猿面试宝典笔记(五)数据结构基础 程序猿面试宝典笔记(六)软件測试 题目 写一个"标准"宏MIN.这个宏输入两个參数并返回较小的一个. 解析 为什么要把如此简单的题目也放进来呢?为了强调宏定义里面括号的重要性! .! 答…
所谓笔记,就是比較个人的东西,把个人认为有点意思的东西记录下来~~ 程序猿面试宝典笔记(一)基本概念 程序猿面试宝典笔记(二)预处理.const和sizeof 程序猿面试宝典笔记(三)auto_ptr.递归 程序猿面试宝典笔记(四)面向对象.类型转换.static 程序猿面试宝典笔记(五)数据结构基础 程序猿面试宝典笔记(六)软件測试 题目 auto_ptr的使用方法 答案 auto_ptr是安全指针. void f() { T* pt(new T); /*....*/ delete pt; }…
在由Java语言编写的程序中.有时候为了提高程序的执行效率,编译器会自己主动对其进行优化,把经常被訪问的变量缓存起来,程序在读取这个变量的时候有可能会直接从缓存(比如寄存器)中来读取这个值.而不会去内存中读取.这样做的一个优点是提高了程序的执行效率,但当遇到多线程编程时.变量的值可能由于别的线程而改变了,而该缓存的值不会相应改变,从而造成应用程序读取的值和实际的变量值不一致.比如,在本次线程内,当读取一个变量时,为提高存取速度,会先把变量读取到一个缓存中,当以后再取变量值时,就直接从缓存中取值.…
大话程序猿面试 10个我最喜欢问程序猿的面试问题 程序猿面试不全然指南 10个经典的C语言面试基础算法及代码 程序猿的10大成功面试技巧 程序猿选择公司的8个标准 编程开发 8个值得关注的PHP安全函数 简析TCP的三次握手与四次分手 10分钟掌握XML.JSON及其解析 高效的jQuery代码编写技巧总结 编译器的工作过程和原理 CPU空暇时在"忙"什么 5个强大的Java分布式缓存框架推荐 架构设计 趣味漫画:云计算的起源 负载均衡调度算法大全 程序人生 程序猿不不过写代码 201…
LeetCode题解汇总(持续更新,并将逐步迁移到本博客列表中) LeetCode题解分类汇总(包括剑指Offer和程序员面试金典) 剑指Offer 序号 题目 难度 03 数组中重复的数字 简单 04 二维数组中的查找 简单 05 替换空格 简单 06 从尾到头打印链表 简单 07 重建二叉树 中等 09 用两个栈实现队列 简单 10- I 斐波那契数列 简单 10- II 青蛙跳台阶问题 简单 11 旋转数组的最小数字 简单 12 矩阵中的路径 中等 13 机器人的运动范围 中等 18 删除…
LeetCode题解汇总(持续更新,并将逐步迁移到本博客列表中) 剑指Offer 数据结构 链表 序号 题目 难度 06 从尾到头打印链表 简单 18 删除链表的节点 简单 22 链表中倒数第k个节点 简单 24 反转链表 简单 52 两个链表的第一个公共节点 简单 二叉树 序号 题目 难度 07 重建二叉树 中等 栈和队列 序号 题目 难度 09 用两个栈实现队列 简单 图 序号 题目 难度 12 矩阵中的路径 中等 13 机器人的运动范围 中等 算法 动态规划 序号 题目 难度 10- I…
像素反转 牛客网 程序员面试金典 题目描述 有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度. 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500,图像元素小于等于256. 测试样例: [[1,2,3],[4,5,6],[7,8,9]],3 返回:[[7,4,1],[8,5,2],[9,6,3]] C++ class Transform { public: //r…
二进制插入 牛客网 程序员面试金典 题目描述 有两个32位整数n和m,请编写算法将m的二进制数位插入到n的二进制的第j到第i位,其中二进制的位数从低位数到高位且以0开始. 给定两个数int n和int m,同时给定int j和int i,意义如题所述,请返回操作后的数,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1. 测试样例: 1024,19,2,6 返回:1100 C++ class BinInsert { public: //run:3ms memory:476k int…
二叉树中和为某一值的路径 牛客网 程序员面试金典 题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大的数组靠前) c++ /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL),…
平分的直线 牛客网 程序员面试金典 C++ Python 题目描述 在二维平面上,有两个正方形,请找出一条直线,能够将这两个正方形对半分.假定正方形的上下两条边与x轴平行. 给定两个vecotrA和B,分别为两个正方形的四个顶点.请返回一个vector,代表所求的平分直线的斜率和截距,保证斜率存在. 测试样例: [(0,0),(0,1),(1,1),(1,0)],[(1,0),(1,1),(2,0),(2,1)] 返回:[0.0,0.5] C++ /* struct Point { int x;…
寻找下一个结点 牛客网 程序员面试金典 C++ java Python 题目描述 请设计一个算法,寻找二叉树中指定结点的下一个结点(即中序遍历的后继). 给定树的根结点指针TreeNode* root和结点的值int p,请返回值为p的结点的后继结点的值.保证结点的值大于等于零小于等于100000且没有重复值,若不存在后继返回-1. C++ /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; T…
奇偶位交换 牛客网 程序员面试金典 C++ Python 题目描述 请编写程序交换一个数的二进制的奇数位和偶数位.(使用越少的指令越好) 给定一个int x,请返回交换后的数int. 测试样例: 10 返回:5 C++ class Exchange { public: //run:2ms memory:480k int exchangeOddEven(int x) { return ((x & 0xaaaaaaaa) >> 1 | (x & 0x55555555) <&l…