面试OR笔试9——1121231234

引用lmjy的题目:https://blog.csdn.net/u013949069/article/details/77600384

 

import java.util.Scanner;
public class Main
{
	public static void main(String[] args) 
	{
		/*
		 * 题目描述:
		    	0-9的整数按照这样的规律排列:第一个数为1,
		    	第2-3个数为1, 2,第4-6个数为1, 2, 3,第7-10个数为1, 2,3, 4。。。。。。。
		    	连在一起是1121231234。。。。。。。123456789101112131415。。。。。。。
		    	求第n个数是多少。
		 */
		
		/*
		 * 解题思路:
		 * 		从规律可看出每个数值之间的距离是1+2+3+...n
		 * 		例如第一个数是1,第二个数是1+2,第三个数是1+2+3以此类推
		 * 		从而只需要判断输入的数值在第几个数区间内,
		 * 		例如输入5,小于1+2+3,从而可以推算出步数,
		 * 		那么只需要构建一个1-step的字符串然后根据步数剪切然后拼接就行
		 */
		
//		1、输入数值
		Scanner cin = new Scanner(System.in);
		int n = cin.nextInt();
		
//		2、记录步数
		int cnt = 0;
		int sum = 0;
		while(sum < n)
		{
			cnt++;
			sum+=cnt;
		}
		
//		3、根据步数构建字符串
		StringBuilder str = new StringBuilder();
		StringBuilder con = new StringBuilder();
		for(int i = 1; i <= cnt+1; ++i){
			str.append(i);
		}
		
//		4、剪切拼接字符串
		for(int i = 1; i <= cnt; ++i)
		{
			con.append(str.substring(0,str.indexOf(i+1+"")));
		}
		System.out.println(con);
	}
}

 

你可能感兴趣的:(数组&字符串)