笔试题分析

本文针对近期互联网公司的面试题进行了详细解答,包括概率题与字符串压缩算法实现。通过对具体案例的剖析,帮助读者理解并掌握此类问题的解决思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

九月迅雷,华为,阿里巴巴,最新笔试面试十题解题报告

写在前面:近观大神July的http://blog.youkuaiyun.com/v_july_v/article/details/11921021的面试题分享,自己做了一些。

 

8月15日,百度2道面试题:
1、来自《编程之美》的概率题:一个桶里面有白球、黑球各100个,现在按下述规则取球:的
    i 、每次从通里面拿出来两个球;
    ii、如果取出的是两个同色的求,就再放入一个黑球;
    ii、如果取出的是两个异色的求,就再放入一个白球。
问:最后桶里面只剩下一个黑球的概率是多少?

http://blog.youkuaiyun.com/maoxunxing/article/details/13095869

9月5日,华为2014校园招聘的机试题目
2、通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
压缩规则:
    1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。
    2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。
要求实现函数: 
     void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);
    输入pInputStr:  输入字符串lInputLen:  输入字符串长度
    输出 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;
注意:只需要完成该函数功能算法,中间不需要有任何IO的输入输出
示例 
    输入:“cccddecc”   输出:“3c2de2c”
    输入:“adef”     输出:“adef”
    输入:“pppppppp” 输出:“8p”

public class Conpress {

	public void swap(StringBuffer stringBuffer,int left,int right){
		
		char temp=stringBuffer.charAt(left);
		stringBuffer.setCharAt(left, stringBuffer.charAt(right));
		stringBuffer.setCharAt(right, temp);
		
	}
	public String conpressString(String string) {
		StringBuffer stringBuffer=new StringBuffer(string);
		
		int length=string.length();
		if (length<=1) {
			return string;
		}
		int fast=1,low=1;
		int count=1;
		char key=stringBuffer.charAt(0);
		while (fast<=length) {
			if (fast==length) {
				if (count>1) {
					stringBuffer.setCharAt(low,  (char) (count+'0'));
					swap(stringBuffer, low, low-1);
					low++;
				}
			}else {
				if (key!=stringBuffer.charAt(fast)) {
					if (count>1) {
						stringBuffer.setCharAt(low,  (char) (count+'0'));
						swap(stringBuffer, low, low-1);
						low++;
					}
					stringBuffer.setCharAt(low++, stringBuffer.charAt(fast));
					key=stringBuffer.charAt(fast);
					count=1;
				}else {
					count++;
				}
			}
			
			fast++;
		}
	
		
		
		stringBuffer.setLength(low);
		String result=new String(stringBuffer);
		
		return result;
		
		
		
	}
	@Test 
	public void test(){
		
	String string="cccddecccc";
//		String string="pppppppp";
//		String string="adef";
		System.out.println(conpressString(string));
		
	}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值