2018阿里巴巴基础平台研发工程师实习生笔试题:一.十进制数转换成的二进制数中有几个1. 二.输出IP所在的网段

1.输入一个十进制数转换成二进制数,输出二进制中有几个1?

		import java.util.Scanner;
		public class Main {
			public static void main(String[] args) {
				Scanner sc = new Scanner(System.in);
				int fangZu = sc.nextInt();
				String a=Integer.toBinaryString(6);
				char []b=a.toCharArray();
				int count=0;
				for (int i = 0; i < b.length; i++) {
					if (b[i]=='1') {
						count++;			
					}
				}
				System.out.println(count);
			}
		}

2.给定IP段列表,每行包含一个IP段和对应的阿里巴巴机房位置;IP段的数量会比较多;任何两段IP不会存在冲突;

输出IP所在的网段。

例如:

输入:

10.20.86.3192.168.0.0/24 千岛湖机房 192.168.0.0/24 张北机房10.20.86.2/8 张北机房210.20.86.9/24 张北机房

end

输出:

10.20.86.9/24 张北机房

程序答案:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String res;


		String _ip;
		try {
			_ip = in.nextLine();
		} catch (Exception e) {
			_ip = null;
		}


		ArrayList<String> _ipRangeList = new ArrayList<>();


		while (in.hasNextLine()) {
			try {
				String temp = in.nextLine();


				if ("end".equals(temp.trim())) {
					break;
				}


				_ipRangeList.add(temp);


			} catch (Exception e) {


			}
		}


		res = ipMatch(_ip, _ipRangeList.toArray(new String[_ipRangeList.size()]));
		System.out.println(res);
	}


	private static String ipMatch(String ip, String[] array) {
		String[] a = ip.split("\\.");
		int b=Integer.valueOf(a[a.length-1]);
		String k=a[0]+"."+a[1]+"."+a[2];
		int index=0;
		for (int i = 0; i < array.length; i++) {
			String k2="10.20.86.9";
			if (array[i].indexOf(k)!=-1) {
				String[] c=array[i].split("\\.");
				String[] d=c[c.length-1].split("/");
				int b0=Integer.valueOf(d[0]);
				String[] bb=d[1].split(" ");
				int b1=Integer.valueOf(bb[0]);
				if (b0<b&&b1>b) {
					index=i;
				}
			}
		}
		
		return array[index];
	}
}

猜你喜欢

转载自blog.csdn.net/qq_39559604/article/details/80286717