当前位置:网站首页>June brush question 02 - string

June brush question 02 - string

2022-07-06 09:38:00 A Guang chasing dreams


Today's brush topic content : character string

Preface

  • Update the problem solution content of the problem brush every day
  • Focus on personal understanding , Look at the difficulty and update the number of questions
  • The title comes from Li Kou
  • Try to work out at least one question every day
  • Language java、python、c\c++

One 、 Today's topic

  1. 2278. Percentage of letters in string ||
  2. 551. Student attendance records I||
  3. 2255. Statistics is the number of strings for a given string prefix ||
  4. 1071. The greatest common factor of a string ||

Two 、 Their thinking

1. 2278. Percentage of letters in string

  1. The number of times the letter appears is obtained by one iteration
  2. Use the number of times *100 Divide by string length n that will do
class Solution {
    
    public int percentageLetter(String s, char letter) {
    
        int[] hash = new int[256];
        int n = s.length();
        for (char c: s.toCharArray()){
    
            hash[c]++;
        }
        return (int)(hash[letter] * 100 / n);
    }
}

2. 551. Student attendance records I

  1. The sliding window , With left and right pointers
  2. The right pointer is used to mark the encounter L The length of , The left pointer increases automatically
  3. If the characters A The number of times is less than 2 also L It is true if it does not appear three times in a row
class Solution {
    
    public boolean checkRecord(String s) {
    
        int[] hash = new int[256];
        boolean flag = true;
        int count = 0;
        int l = 0, r = -1, n = s.length();
        char[] arr = s.toCharArray();
        for (char c: arr){
    
            hash[c]++;
        }
        while(l < n){
    
            r = l;
            count = 0;
            while (r < n && arr[r] == 'L'){
    
                count++;
                r++;
                if (count == 3) {
    
                    flag =  false;
                    break;
                }
            }
            l++;
        }

        if(hash['A'] < 2 && flag){
    
            return true;
        }
        return false;
    }
}


3. 2255. Statistics is the number of strings for a given string prefix

  1. General simulation , Traverse each word , Find the words that meet the conditions
  2. Count the times
class Solution {
    
    public int countPrefixes(String[] words, String s) {
    
        char[] arr = s.toCharArray();
        int i, count = 0;
        boolean flag;
        for (String word: words){
    
            i = 0;
            flag = true;
            for (char c: word.toCharArray()){
    
                if (i < arr.length && arr[i] == c) i++;
                else{
    
                    flag = false;
                    break;
                }
            }
            if (flag) count++;
        }

        return count;
    }
}

4. 1071. The greatest common factor of a string

  1. When I did it, I only thought of violence
    There are many solutions to this problem Answer key
class Solution {
    
    public String gcdOfStrings(String str1, String str2) {
    
        if (str1.length() > str2.length()){
    
            return gcdOfStrings(str2, str1); //  Make the first string shorter 
        }
        StringBuffer sb = new StringBuffer();
        String ret;
        int i;
        if (str1.length() == 0) return "";
        if (str2.contains(str1)){
    
            char[] arr1 = str1.toCharArray();
            char[] arr2 = str2.toCharArray();
            for (i = 0; i < arr1.length; i++){
    
                if (arr1[i] == arr2[i]){
    
                    sb.append(arr1[i]);
                }
                else{
    
                    break;
                }
            }
            int len = sb.length();
            if (len == 0) return "";
            for (i = len; i < arr2.length; i++){
    
                if (arr2[i] != sb.charAt(i % len)){
    
                    return "";
                }
            }
            ret = sb.toString();
            while (arr2.length % ret.length() != 0 || arr1.length % ret.length() != 0){
    
                ret = sb.substring(0, len-1);
                len -= 1;
            }

            return ret;
        }
        return "";
    }
}
原网站

版权声明
本文为[A Guang chasing dreams]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060902123782.html