当前位置:网站首页>六月集训 第二天——字符串

六月集训 第二天——字符串

2022-06-12 06:27:00 误入佬群

前言

今天算法的内容是:字符串

一、字母在字符串中的百分比

        给你一个字符串 s 和一个字符 letter ,返回在 s 中等于 letter 字符所占的 百分比 ,向下取整到最接近的百分比。

一、思路:

        (1)符合条件进行记录,最后进行百分比计算

二、源码

class Solution {
    
public:
    int percentageLetter(string s, char letter) {
    
        double count=0;
        for(int i=0;i<s.size();i++){
    
            if(s[i]==letter){
    
                ++count;
            }
        }
        int x=count/s.size()*100;
        //printf("%d",s.size());
        return x;
    }
};

三.知识点

        线性枚举

二、 学生出勤记录 I

        给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:
‘A’:Absent,缺勤
‘L’:Late,迟到
‘P’:Present,到场
如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励:
按 总出勤 计,学生缺勤(‘A’)严格 少于两天。
学生 不会 存在 连续 3 天或 连续 3 天以上的迟到(‘L’)记录。
如果学生可以获得出勤奖励,返回 true ;否则,返回 false 。

一、思路:

        (1)对于缺勤进行一个记录
        (2)对于迟到进行一个连续天数的记录,保留最高的记录,时刻与最高记录进行对比保持更新,断开则记录归零

二、源码

class Solution {
    
public:
    bool checkRecord(string s) {
    
        int count=0,n=0;
        int max=0;
        for(int i=0;i<s.size();i++){
    
            if(s[i]=='A'){
    
                count++;
            }
            //就正常的 进行 一个对比记录即可
            if(s[i]=='L'){
    
                n++;
                max=max>n?max:n;
            }else{
        
                n=0;
            }
        } 
        if(count<2&&max<3){
    
            return true;
        }
        return false;
    }
};

三.知识点

        线性枚举

三、统计是给定字符串前缀的字符串数目

        给你一个字符串数组 words 和一个字符串 s ,其中 words[i] 和 s 只包含 小写英文字母 。
请你返回 words 中是字符串 s 前缀 的 字符串数目 。
一个字符串的 前缀 是出现在字符串开头子字符串。子字符串 是一个字符串中的连续一段字符序列。(不懂看例子)

示例 1:
输入:words = [“a”,“b”,“c”,“ab”,“bc”,“abc”], s = “abc”
输出:3
解释:
words 中是 s = “abc” 前缀的字符串为:
“a” ,“ab” 和 “abc” 。
所以 words 中是字符串 s 前缀的字符串数目为 3 。

示例 2:
输入:words = [“a”,“a”], s = “aa”
输出:2
解释:
两个字符串都是 s 的前缀。
注意,相同的字符串可能在 words 中出现多次,它们应该被计数多次。

一、思路:

        (1)循环字符串数组行数,对每行的字符串列数进行线性判断是否属于字符串s中子字符串并,进行一个计数
        (2)实现一个列数判断是否属于字符串s的子字符,
为:
        字符当行长度大于字符串s的长度,错
        符合,然后进行对该行字符串进行线性遍历,判断是否相符和,没问题就对辣

二、源码

class Solution {
    
    bool is(string& pre,string& s){
    
        if(pre.size()>s.size()){
    
            return false;
        }
        for(int i=0;i<pre.size();i++){
    
            if(pre[i]!=s[i]){
    
                return false;
            }
        }
        return true;
    }
public:
    int countPrefixes(vector<string>& words, string s) {
    
        int count=0;
        for(int i=0;i<words.size();i++){
    
            if(is(words[i],s)){
    
                count++;
            }
        }
        return count;
    }
};

三.知识点

        构造函数如何进行传入数组中参数? 对数组进行引用符号&
        bool is(string& pre,string& s)

原网站

版权声明
本文为[误入佬群]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_64141176/article/details/125106127