记一道360前端笔试算法题:取靓号

题目描述:人们在排队取号,碰到带4的就跳过。现在第n个人来,取得号是多少?
举个栗子:
第3个人,取的号是3;
第4个人,取的号是5;
第10个人,取的号是11;
第50000个人,取的号是86626;
输入的是原始序号,输出的是对应的靓号。
思路:题目挺简单的,例如在50000中,只要找到找带有“4”的数字即可(用sum来统计带有“4”的数字的个数),然后把一共带有“4”的数字个数加上50000即可得到结果。但值得注意的是单纯的相加肯定得不到正确的结果的,因为靓号可能也带有“4”,例如50004就不能作为靓号,第一种方法是判断一下(50000+sum)的结果是否带有“4”,如有则再+1,但实现起来比另一种方法要复杂。另一种方法比较巧妙:就是在for循环的时候,以n+sum作为for循环的结束条件。本次博客主要是使用第二种方法。
源代码如下:



	
		
		
	
	
		
	


你可能感兴趣的:(记一道360前端笔试算法题:取靓号)