程序员面试金典Java
文章平均质量分 59
feige1990
这个作者很懒,什么都没留下…
展开
-
空格替换(Java)
题目描述请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string。测试样例:"Mr John Smith”,13返回:"Mr%20Joh原创 2015-08-23 17:19:37 · 682 阅读 · 0 评论 -
双栈排序(Java)
题目描述请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。给定一个int[] numbers(C++中为vector),其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只能访问到第一个元素。测试样例:[1,2,3,4,5]返回:[5,4,3,2,1]i原创 2015-08-25 11:12:41 · 1780 阅读 · 0 评论 -
集合栈
题目描述请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈。该数据结构应支持与普通栈相同的push和pop操作。给定一个操作序列int[][2] ope(C++为vector>),每个操作的第一个数代表操作类型,若为1,则为push操作,后一个数为应push的数字;若为2,则为pop操作,后一个数无意义。请返回一个i原创 2015-08-25 10:10:55 · 818 阅读 · 0 评论 -
翻转子串(Java)
假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000。测试样例:"Hello world","world原创 2015-08-23 22:32:22 · 703 阅读 · 0 评论 -
访问单个节点的删除(Java)
题目描述实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回trueclass ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val;原创 2015-08-24 10:45:53 · 774 阅读 · 0 评论 -
回文链表(Java)
题目描述请编写一个函数,检查链表是否为回文。给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。测试样例:{1,2,3,2,1}返回:true{1,2,3,2,3}返回:false注:(1)引入栈(2)知道链表长度时,可以使用递归法引入栈:将前半部分的节点入栈,由于不知道链表长度,利用快慢指针的方法,将慢指针的数据原创 2015-08-24 20:33:57 · 1037 阅读 · 0 评论 -
链表分割(Java)
题目描述编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。 // 分割链表: public ListNode partition1(ListNode pHead, int x) {原创 2015-08-24 11:40:32 · 1058 阅读 · 0 评论 -
清除行列(Java)
题目描述请编写一个算法,若MxN矩阵中某个元素为0,则将其所在的行与列清零。给定一个MxN的int[][]矩阵(C++中为vector)mat和矩阵的阶数n,请返回完成操作后的int[][]矩阵(C++中为vector),保证n小于等于300,矩阵中的元素为int范围内。测试样例:[[1,2,3],[0,1,2],[0,0,1]]返回:[[0,0,3],[0,0,0原创 2015-08-23 20:49:53 · 581 阅读 · 0 评论 -
原串翻转(Java)
请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。测试样例:"This is nowcoder"返回:"redocwon si sihT"注:字符串的处理 较简单哈public class原创 2015-08-23 18:37:08 · 446 阅读 · 0 评论 -
像素翻转(Java)
有一副由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原创 2015-08-23 20:14:50 · 766 阅读 · 0 评论 -
确定字符互异(Java)
题目描述请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。测试样例:"aeiou"返回:True"BarackObama"返原创 2015-08-23 18:12:14 · 1462 阅读 · 0 评论 -
链式A+B
题目描述有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。测试样例:{1,2,3},{3,2,1}返回:{4,4,4}public class Plus { //链式A原创 2015-08-24 19:00:59 · 737 阅读 · 0 评论 -
确定两串乱序同构(Java)
import java.util.Arrays;public class Same { public boolean checkSam(String stringA, String stringB) { // write code here if(stringA.length() != stringB.length()) return false;原创 2015-08-23 19:31:22 · 607 阅读 · 0 评论 -
基本字符串压缩(Java)
题目描述利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。给定一个string iniString为待压缩的串(长度小于等于3000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。测试样例"aabc原创 2015-08-23 17:42:44 · 631 阅读 · 0 评论 -
二叉树平衡检查(Java)
题目描述实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。给定指向树根结点的指针TreeNode* root,请返回一个bool,代表这棵树是否平衡。package com.msjd.tree;public class Balance { public boolean isBalance(Tre原创 2015-08-25 12:29:17 · 557 阅读 · 0 评论