看大神文章小结——微软等面试10,11

大神 地址 :http://blog.csdn.net/v_JULY_v/article/details/6015165


第 10 题(字符串)
翻转句子中单词的顺序。
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。


读题。一看改变顺序的。做过一些了。 第一反应就是通过多次翻转实现。于是开始写代码

	public String mainMen(String s){
		String[] sa=s.split(" ");
		StringBuffer temp=new StringBuffer();
		for(int i=0;i<sa.length;i++){  // String ss:sa){
			StringBuffer sb=new StringBuffer(sa[i]);
			sb=overturn(sb);
			temp.append(sb);
			temp.append(" ");
		}
		temp=overturn(temp);
		return temp.toString();
	}
	
	public StringBuffer overturn(StringBuffer s){
		for(int i=0;i<(s.length())/2;i++){
			int lastIndex=s.length()-1-i;
		
			char start=s.charAt(i);
			char end=s.charAt(lastIndex);
			char temp=start;
			start=end;
			end=temp;
			s.setCharAt(i, start);
			s.setCharAt(lastIndex, end);
		}
		return s;
	}

第11题
------------------------------------求二叉树中节点的最大距离...
如果我们把二叉树看成一个图,
父子节点之间的连线看成是双向的,
我们姑且定义"距离"为两节点之间边的个数。
写一个程序,
求一棵二叉树中相距最远的两个节点之间的距离。


没思路 没思路。。貌似 这是前面所有题目中卡壳最长的。 一点思路都没有 。先放一下。 过一阵子再来想。 有时候 题目就是这样 卡壳了 再怎么想都没用。 过一会儿 再来想 估计会有办法。


想了一下。 貌似还是没有什么好的办法。 走笨方法 循环递归? 先写代码试试吧。需要注意的是。 这个只要求 距离。那么 很明显 在循环计算的时候。 不停的更新最大值。一直到结束就可以了。

首先  最大距离 肯定需要经过一个跟节点。 而经过这个根节点的最大距离肯定在这个跟的两边(可以包含根 即只有一个子节点的情况) 然后 循环遍历所有跟节点。就可以了。考试的话 我就只能提交这样的答案了 代码实现如下。

	public int mainCount(Node node){
		count(node);
		return maxLength;
	}
	
	private void count(Node node){
		int left=0;
		int right=0;
		if(node.getLeft()!=null){
			left=1+getNodeLev(node.getLeft());
			count(node.getLeft());
		}
		if(node.getRight()!=null){
			right=1+getNodeLev(node.getRight());
			count(node.getRight());
		}
		if(maxLength<(left+right)){
			System.out.println("left:"+left+"right:"+right+node.getNum());
			maxLength=left+right;
		}
		
		
	}
	/**获取深度*/
	private int getNodeLev(Node node){
		int lev=0;
		int left=0;
		int right=0;
		if(node.getLeft()!=null){
			left=1+getNodeLev(node.getLeft());
		}
		if(node.getRight()!=null){
			right=1+getNodeLev(node.getRight());
		}
		return Math.max(left, right);
	}

测试了一下 貌似是对的。去看看别人这么想的。貌似 他们的 思想差不多吧。 反正遇到树 就想到递归。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值