剑指Offer第七章面试题(Java版)
来源:互联网 发布:淘宝官服电话 编辑:程序博客网 时间:2024/06/06 10:48
面试题49:把字符串转换成整数
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。
public class Solution { public int StrToInt(String str) { if (str==null) { try { throw new NullPointerException("str is null."); } catch (NullPointerException e) { e.printStackTrace(); } } if (str.length()==0) { return 0; } char[] chs = str.toCharArray(); int result = 0; int n=0; boolean flag = true; if (chs[n]=='+') { flag = true; n++; }else if (chs[n]=='-') { flag = false; n++; }else if (chs[n]<'0'||chs[n]>'9') { return 0; } while (n<chs.length&&chs[n]=='0') { n++; } for (int i = n; i < chs.length; i++) { if (chs[i]<'0'||chs[i]>'9') { return 0; } result = result*10+(chs[i]-48); } if (!flag) { result *= -1; } return result; }}
面试题50:树中两个节点的最低公共祖先
import java.util.Stack;public class Demo50 { //求最低公共祖先 public TreeNode GetLastCommonParent(TreeNode root, TreeNode treenode1,TreeNode treenode2){ if (root==null||treenode1==null||treenode2==null) { return null; } Stack<TreeNode> stack1 = new Stack<>(); Stack<TreeNode> stack2 = new Stack<>(); boolean treenodeflag1 = false; boolean treenodeflag2 = false; treenodeflag1 = GetNodePath(root, treenode1, stack1); treenodeflag2 = GetNodePath(root, treenode2, stack2); if (treenodeflag1&&treenodeflag2) {//如果都找到了两条路径 return GetLastCommonNode(stack1,stack2); } return null; } //求各个节点的路径 public boolean GetNodePath(TreeNode root,TreeNode node,Stack<TreeNode> stack){ //说明找到该路径了 if (root==node) { return true; } //如果是叶节点了 if (root.left==null&&root.right==null) { return false; } //入栈 stack.push(root); boolean foundleft = false; boolean foundright = false; if (root.left!=null) { foundleft = GetNodePath(root.left,node,stack); if (foundleft) { return true; } } if (root.right!=null) { foundright = GetNodePath(root.right,node,stack); if (foundright) { return true; } } if (!foundleft&&!foundright) { stack.pop(); } return false; } /** * 查找最后一个公共节点 * @param stack1 * @param stack2 * @return */ public TreeNode GetLastCommonNode(Stack<TreeNode> stack1,Stack<TreeNode> stack2){ TreeNode lastNode=null; while (!stack1.isEmpty()&&!stack2.isEmpty()) { TreeNode node1 = stack1.pop(); TreeNode node2 = stack2.pop(); if (node1==node2) { lastNode = node1; } } return lastNode; }}
0 0
- 剑指Offer第七章面试题(Java版)
- 剑指Offer第二章面试题(Java版)
- 剑指Offer第三章面试题(Java版)
- 剑指Offer第四章面试题(Java版)
- 剑指Offer第五章面试题(Java版)
- 剑指Offer第六章面试题(Java版)
- 剑指Offer第八章面试题(Java版)
- 剑指Offer面试题4(Java版),替换空格
- 剑指Offer面试题34(java版):丑数
- 剑指Offer面试题34(Java版):丑数
- 剑指Offer面试题4(Java版):替换空格
- 剑指Offer(第2版) 面试题3、面试题4,Java实现
- 剑指offer 面试题4 替换空格 java版答案
- 剑指offer-面试题7:俩个栈实现队列(java)
- 剑指offer面试题4 替换空格(java)
- 剑指offer面试题6 重建二叉树(java)
- 剑指offer面试题3(java实现)
- 剑指offer面试题4(java实现)
- [BZOJ1046] [HAOI2007]上升序列
- 【项目】——B/S开发中的Static陷阱
- CPU工作原理
- 界面切换之元素共享
- TCP/IP的工作方式
- 剑指Offer第七章面试题(Java版)
- HDU 1724 Ellipse 自适应辛普森积分
- 【JLOI2011】【BZOJ2761】不重复数字
- HDU 2955 Robberies (01背包dp)
- 《软件测试基础》(小结一)
- MAT分析dump文件
- Fork and Join: Java也可以轻松地编写并发程序
- MethodInvokingJobDetailFactoryBean的并发问题
- 关于通过get方法请求json数据出现数据不全的解决方案