- 量變終於迎來了質變!破壁人系列中一個過去的問題終於獲得瞭解答!
- 不但要練習,還要複習,總結思路!
書寫一個類,類名爲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; } }