【249天】我愛刷題系列(8)

叨叨兩句

  1. 量變終於迎來了質變!破壁人系列中一個過去的問題終於獲得瞭解答!
  2. 不但要練習,還要複習,總結思路!

題17:不一樣大小的兩個值如何拼成一個限定的值

題目描述

書寫一個類,類名爲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;
            }
        }
    }
}

題18:分揀思想+重置計數器+求一組數最大值

題目描述:

書寫一個類,類名爲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;
        
        
    }
}

題19:獲取鏡像元素

題目描述

書寫一個類,類名爲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;
        } 
        
    }
}

題20:輪流執行代碼

題目描述

書寫一個類,類名爲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;
    }
}

題21:標記思想的典型運用

題目描述

書寫一個類,類名爲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;
    }
}
相關文章
相關標籤/搜索