LeetCode刷题记录(2)

跟着英雄哥6月集训——6.2


题目链接:

六月2日数组题目
2278. 字母在字符串中的百分比
551. 学生出勤记录 I
2255. 统计是给定字符串前缀的字符串数目
1071. 字符串的最大公因子

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

1.简单:
class Solution {
public:
    int percentageLetter(string s, char letter) {
        int len = s.length();
        int num = 0;
        for(int i = 0; i < len; i++)
            if(letter == s[i])
                num++;
        return (1.0*num/len)*100;
    }
};

二、551. 学生出勤记录 I

1.利用find()函数:

find(str , x)函数,从X位置开始找str字符串,如果找到返回str所在的第一个位置,如果找不到,返回一个无穷大的数。

class Solution {
public:
    bool checkRecord(string s) {
        int len = s.size();
        if(s.find("LLL") < len){//找到LLL就得false
            return false;
        } 
        if(s.find('A') < len ){//假如找到一个A
            int x = s.find('A');
            if(s.find('A',x+1) < len){//从找到A的位置接着找A
                return false;
            }
        }    
        return true;
    }
};

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

1.利用前缀和:

利用前缀和把所有的字串求出来,和words一个一个比较

class Solution {
public:
    int countPrefixes(vector<string>& words, string s) {
        int len = s.size();
        vector<string> pres(len+1);
        for(int i = 0; i < len; i++){
            pres[i+1] = pres[i] + s[i];
        }
        int ans = 0;
        for(int i = 0; i < words.size(); i++){
            for(int j = 0; j < len+1; j++){
                if(words[i] == pres[j])
                {
                    ans++;
                    break;
                }
            }
        }
        return ans;
    }
};

四、1071. 字符串的最大公因子

1.利用字符串的长度关系:

这个题目的要发现两个字符串的长度,如果存在某一个字符串A可以整除着两个字符串,那么说明A一定是这两个字符串的共同字串,那么这两个字符串的长度一定是都是A长度的倍数,不难发现A的长度就是另外两个字符串长度的最大公约数。

class Solution {
public:
    bool check(string s,string t){//检查是否可以整除
        int len1 = s.size();//是否可以被整除的字符串
        int len2 = t.size();//要求的字符串
        int n = len1/len2;
        string ans = "";
        for(int i = 0; i < n; i++){
            ans += t;
        }
        return ans == s;
    }
    string gcdOfStrings(string str1, string str2) {
        int n = __gcd(str1.size(),str2.size());//求出二者的最大公约数
        string X = "";
        for(int i = 0; i < n; i++){
            X += str1[i];
        }
        if(check(str1,X) && check(str2,X)){
            return X;
        }
        else{
            return "";
        }
    }
};

总结

今天的字符串都挺简单的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值