2019独角兽企业重金招聘Python工程师标准>>>
现在,我怕的并不是那艰苦严峻的生活,而是不能再学习和认识我迫切想了解的世界。对我来说,不学习,毋宁死。——罗蒙诺索夫
题目一
给定一个字符串str,返回str的统计字符串。例如,“aaabbadddffc”的统计字符串为“a_3_b_2_a_1_d_3_f_2_c_1”。
代码
public static String getCountString(String str){
//如果str为空,返回空
if(str==null || "".equals(str)){
return "";
}
//将字符串转为字符数组
char[] chs = str.toCharArray();
//res表示统计字符串,此时只包含str的第0个字符
String res = String.valueOf(chs[0]);
//num代表当前字符的数量
int num=1;
//从str[1]位置开始,从左到右遍历str
for(int i=1;i
题目二
给定一个字符类型数组chas[],判断chas中是否所有的字符都只出现过一次。例如,chas=['a','b','c'],返回true; chas=['1','2','1'] ,返回false。
代码
public boolean isUnique1(char[] chas){
//如果是空字符数组,直接返回true
if(chas == null){
return true;
}
//定义一个布尔型数组map,记录每种字符的出现情况
boolean map = new boolean[256];
//遍历chas
for(int i=0;i
题目三
给定一个数组arr,返回子数组的最大累加和。例如,arr=[1,-2,3,5,-2,6,-1],在所有的子数组中,[3,5,-2,6]可以累加出最大的和12,所以返回12。
代码
pubic int maxSum(int[] arr){
if(arr==null || arr.length==0){
return 0;
}
//定义max为极小值
int max = Integer.MIN_VALUE;
//定义变量cur记录每一步的累加和
int cur=0;
//遍历arr
for(int i=0;i!=arr.length;i++){
累加
cur+=arr[i];
//获取最大值
max = Math.max(max,cur);
//当cur<0,说明累加到当前数出现了小于0的结果,那么累加的这一部分肯定不能作为产生最大累加和
//的子数组的左边部分,此时令cur=0,表示重新从下一个数开始累加。
cur = cur<0?0:cur;
}
return max;
}
本篇文章只是列举了三个简单的算法题,后边的算法系列我会逐渐加大题目的难度。
参考资料
《程序员代码面试指南》
=============================================================