- 量变终于迎来了质变!破壁人系列中一个过去的问题终于获得了解答!
- 不但要练习,还要复习,总结思路!
书写一个类,类名为Itheima;java
类中有一个方法,方法名makeBricks;数组
咱们想作一排砖(长度本身定),咱们有一些小砖(每块1英寸)和大砖(每块5英寸),
若是用咱们选择的砖块的数量可以拼接成功,则返回true;不然返回false,
例如:makeBricks(3, 1, 8) → true
(尽可能不使用循环,太耗费时间,会致使后台验证超时)oop
方法调用 | 指望值 |
---|---|
makeBricks(3,1,8) | true |
makeBricks(3,1,9) | false |
makeBricks(3,2,10) | true |
public class Itheima { public boolean makeBricks(int a, int b, int c){ //指定长度最多可以使用的大砖数 int max = c / 5; //拼接分两种状况:b >= max 则最多使用max b < max 则使用b if(b >= max){ //需求小砖数 if(c - max * 5 <= a){ return true; } else { return false; } } else { //需求小砖数 if(c- b * 5 <= a){ return true; } else { return false; } } } }
书写一个类,类名为Itheima;code
类中有一个方法,方法名maxBlock;字符串
给定一个字符串,返回该字符串中连续出现个数最多的字符的数量。get
方法调用 | 指望值 |
---|---|
maxBlock("hoopla") | 2 |
maxBlock("abbCCCddBBBxx") | 3 |
maxBlock("") | 0 |
import java.util.HashMap; public class Itheima { public int maxBlock(String str){ int max = 0;//用于记录某个字符连续出现最大次数 int count = 1;//用于做为中间变量,记录正在遍历的字符的个数 HashMap<Character,Integer> map = new HashMap<>();//Key:字符 Value:最大连续出现次数 for (int i = 0; i < str.length() - 1; i++) { char c1 = str.charAt(i); char c2 = str.charAt(i + 1); if(c1 == c2){ count++; map.put(c1,count); if(count > max){ max = count; map.put(c1, max); } } else { count = 1; map.put(c2,count); } } int totalMax = 0; for (Character c : map.keySet()) { if(map.get(c) >= totalMax){ totalMax = map.get(c); } } return totalMax; } }
书写一个类,类名为Itheima;string
类中有一个方法,方法名mirrorEnds;table
给定一个字符串,若是字符串的前串和后串有镜面关系,即返回前串做为方法的返回值,例如:字符串
"abxyzba"的前串"ab"与后串"ba"则为镜面关系,那么返回字符串"ab",若是前串和后串都是相同字符串
就原路返回,例如:"xxYxx"返回"xxYxx"。若是二者都不符合就返回空。class
方法调用 | 指望值 |
---|---|
mirrorEnds("abXYZba") | "ab" |
mirrorEnds("abca") | "a" |
mirrorEnds("aba") | "aba" |
public class Itheima { public String mirrorEnds(String str){ String sumStr = ""; for (int i = 0; i < str.length(); i++) { if(str.charAt(i) == str.charAt(str.length() - 1 - i)){ sumStr = sumStr + str.charAt(i); } if(sumStr.length() != i + 1){ break; } } if("".equals(sumStr)){ return ""; } if(sumStr.length() == 1){ return sumStr; } boolean sumFlag = true; boolean flag = false; for (int i = 0; i < sumStr.length() - 1; i++) { if(sumStr.charAt(i) == sumStr.charAt(i + 1)){ flag = true; } sumFlag = sumFlag && flag; } if(sumFlag){ return str; } else { return sumStr; } } }
书写一个类,类名为Itheima;import
类中有一个方法,方法名mixString;
给定两个字符串参数a和b,建立一个更大的字符串,由a的第一个字符,b的第一个字符,
a的第二个字符,b的第二个字符等组成。 任何剩余的字符在结果的末尾。
例如:"abc"和"xyz"返回的是:"axbycz".
方法调用 | 指望值 |
---|---|
mixString("abc","xyz") | "axbycz" |
mixString("Hi","There") | "HTihere" |
mixString("xxxx","There") | "xTxhxexre" |
public class Itheima { public String mixString(String a,String b){ String sumStr = ""; int maxTimes = a.length() + b.length(); if(a.length() >= b.length()){ for(int i = 0; i < maxTimes; i++){ if(i / 2 < b.length()){ if(i % 2 == 0){ sumStr = sumStr + a.charAt(i / 2); } else { sumStr = sumStr + b.charAt(i / 2); } } else { sumStr = sumStr + a.substring(b.length()); break; } } } else { for(int i = 0; i < maxTimes; i++){ if(i / 2 < a.length()){ if(i % 2 == 0){ sumStr = sumStr + a.charAt(i / 2); } else { sumStr = sumStr + b.charAt(i / 2); } } else { sumStr = sumStr + b.substring(a.length()); break; } } } return sumStr; } }
public class Itheima { public String mixString(String a,String b){ String sumStr = ""; if(a.length() >= b.length()){ String endStr = a.substring(b.length()); for(int i = 0; i < b.length(); i++){ sumStr += a.charAt(i) +"" + b.charAt(i); } sumStr += endStr; } else { String endStr = b.substring(a.length()); for(int i = 0; i < a.length(); i++){ sumStr += a.charAt(i) + "" + b.charAt(i); } sumStr += endStr; } return sumStr; } }
书写一个类,类名为Itheima;
类中有一个方法,方法名only14;
给定一个整型数组,若是全部元素都是1和4或者其中之一,就返回true。
方法调用 | 指望值 |
---|---|
only14([1,4,1,4]) | true |
only14([1,4,2,4]) | false |
only14([1,1]) | true |
public class Itheima { public boolean only14(int[] arr){ boolean sumFlag = true; boolean flag = false; for (int i = 0; i < arr.length; i++) { if(arr[i] == 1 || arr[i] == 4){ flag = true; } else { flag = false; } sumFlag = sumFlag && flag; } return sumFlag && flag; } }