Java算法-微软真题
第一道题
给定一个正数num,要返回一个大于num的数,
并且每一位和相邻位的数字不能相等
返回达标的数字中,最小的那个
99不能返回100,要返回101
110不能返回111,要返回121
public static int min(int num) { char[] array = (0 + String.valueOf(num + 1)).toCharArray(); process(array); return Integer.valueOf(String.valueOf(array)); } public static void process(char[] array) { for(int i = 1; i < array.length; i ++) { while(array[i] == array[i - 1]) { addOne(array, i); for(int j = i + 1; j < array.length; j ++) { array[j] = '0'; } process(array); return; } } } private static void addOne(char[] array, int i) { while(array[i] == '9') { array[i --] = '0'; } array[i] ++; }
第二道题
来自微软
比如,str = "ayxbx"
有以下4种切法:alyxbx、ay|xbx、 ayxlbx、 ayxb |x
其中第1、3、4种切法符合: x和y的个数,至少在左右两
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
八股文+场景题+算法真题 文章被收录于专栏
Java全新整理八股文 + 场景题 + 算法 精心设计,面试命中率超过80% 专栏优势: 1、问题和答案已经整理到位,答案更专业,可以直接回答,不需要额外总结! 2、场景题讲解清晰,适用于大部分场景的项目,并且持续更新中 3、分享学习心得【知识点的广度和深度,算法有哪些坑,如何准备面试等等】