力扣刷题篇——字符串

简介: 力扣刷题篇——字符串

2278 题目描述💎:


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


示例 1:


输入:s = "foobar", letter = "o"

输出:33

解释:

等于字母 'o' 的字符在 s 中占到的百分比是 2 / 6 * 100% = 33% ,向下取整,所以返回 33 。

示例 2:


输入:s = "jjjj", letter = "k"

输出:0

解释:

等于字母 'k' 的字符在 s 中占到的百分比是 0% ,所以返回 0 。


解题思路💎:

定义一个记录相同字符的数字

将字符串转成字符数组 toCharArray();

迭代一次遍历 最后按要求输出计算结果

代码附上 💎:

class Solution {
    public int percentageLetter(String s, char letter) {
        int len=s.length();
        int count=0;
        char cc[]=s.toCharArray();
        for(char c:cc){
            if(c==letter){
                        count++;
            }
        }
        //return (int)(count*1.0/len*100);
        return count*100/len;
    }
}

551 题目描述💎:


给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:


'A':Absent,缺勤

'L':Late,迟到

'P':Present,到场

如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励:


按 总出勤 计,学生缺勤('A')严格 少于两天。

学生 不会 存在 连续 3 天或 连续 3 天以上的迟到('L')记录。

如果学生可以获得出勤奖励,返回 true ;否则,返回 false 。



示例 1:


输入:s = "PPALLP"

输出:true

解释:学生缺勤次数少于 2 次,且不存在 3 天或以上的连续迟到记录。

示例 2:


输入:s = "PPALLL"

输出:false

解释:学生最后三天连续迟到,所以不满足出勤奖励的条件。


解题思路:💎

根据题意模拟即可

注意题目给的条件

1.按 总出勤 计,学生缺勤('A')严格 少于两天。

2.学生 不会 存在 连续 3 天或 连续 3 天以上的迟到('L')记录。

定义两个变量来记录迟到跟缺席的次数

如果字符等于'A'则记为一次缺席 缺席次数加1

如果字符等于'L'则记为一次迟到,迟到次数加1,反正将连续迟到次数清零

代码附上💎:

class Solution {
    public boolean checkRecord(String s) {
        int absentnumber=0;
        int latenumber=0;
        for(int i=0;i<s.length();i++){
            char ch=s.charAt(i);
            if(ch=='A'){ 
                absentnumber++;
                if(absentnumber>=2){
                return false;
            }
            }
            if(ch=='L'){
                latenumber++;
                if(latenumber>=3){
                    return false;
                }
                }
                else{
                    latenumber=0;
                }
        }
return true;
    }
}

2255.题目描述:💎


给你一个字符串数组 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 中出现多次,它们应该被计数多次。


解题思路💎:

这道题思路还是很清晰的

首先一个枚举 接着一个判定

定义一个方法判断是否是给定字符串的前缀

代码附上💎:  

class Solution {
    public int countPrefixes(String[] words, String s) {
        int count=0;
           for(int i=0;i<words.length;i++){
               if(isqianzhui(words[i],s)){
                   count++;
               }
           }
           return count;
    }
    public boolean isqianzhui(String s1,String s2){
        //特判两种情况
        if(s1.length()> s2.length()){
            return false;
        }
        for(int i=0;i<s1.length();i++){
            if(s1.charAt(i)!=s2.charAt(i)){
                return false;
            }
        }
 return true;
    }
}

1071 题目描述💎:


对于字符串 s 和 t,只有在 s = t + ... + t(t 自身连接 1 次或多次)时,我们才认定 “t 能除尽 s”。


给定两个字符串 str1 和 str2 。返回 最长字符串 x,要求满足 x 能除尽 str1 且 X 能除尽 str2 。


示例 1:


输入:str1 = "ABCABC", str2 = "ABC"

输出:"ABC"

示例 2:


输入:str1 = "ABABAB", str2 = "ABAB"

输出:"AB"

示例 3:


输入:str1 = "LEET", str2 = "CODE"

输出:""


解题思路💎:

定义一个求最大公约数的方法

 如果 str1 和 str2 存在最大公约数 str,那么就相当于 str1 和 str2 都是由 str 组成的,那么 str1 + str2 和 str2 + str1 应该是相等的 如果不满足,那么不存在最大公约数 我们可以通过 两个字符串的长度来求得最大公约数的长度


代码附上💎:  

class Solution {
    public String gcdOfStrings(String str1, String str2) {
   // 如果 str1 和 str2 存在最大公约数 str,那么就相当于 str1 和 str2 都是由 str 组成的,那么 str1 + str2 和 str2 + str1 应该是相等的 如果不满足,那么不存在最大公约数 我们可以通过 两个字符串的长度来求得最大公约数的长度
        if(!(str1+str2).equals(str2+str1)){
            return "";
        }
        return str1.substring(0,gcd(str1.length(),str2.length()));
    }
    public int gcd(int a,int b){
        return b==0?a:gcd(b,a%b);
    }
}

以上就是小王同学给大家带来的力扣刷题-字符串篇






相关文章
|
1月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
73 2
|
1月前
|
存储 算法
LeetCode第43题字符串相乘
LeetCode第43题"字符串相乘"的解题方法,通过使用数组存储乘积并处理进位,避免了字符串转换数字的复杂性,提高了算法效率。
LeetCode第43题字符串相乘
|
1月前
|
算法 Java
LeetCode第28题找出字符串中第一个匹配项的下标
这篇文章介绍了LeetCode第28题"找出字符串中第一个匹配项的下标"的两种解法:暴力解法和KMP算法,并解释了KMP算法通过构建前缀表来提高字符串搜索的效率。
LeetCode第28题找出字符串中第一个匹配项的下标
|
1月前
|
算法
LeetCode第8题字符串转换整数 (atoi)
该文章介绍了 LeetCode 第 8 题字符串转换整数 (atoi)的解法,需要对字符串进行格式解析与校验,去除前导空格和处理正负号,通过从高位到低位的计算方式将字符串转换为整数,并处理越界情况。同时总结了这几道题都需要对数字的表示有理解。
LeetCode第8题字符串转换整数 (atoi)
|
1月前
|
索引 Python
【Leetcode刷题Python】从列表list中创建一颗二叉树
本文介绍了如何使用Python递归函数从列表中创建二叉树,其中每个节点的左右子节点索引分别是当前节点索引的2倍加1和2倍加2。
36 7
|
1月前
|
算法 Python
【Leetcode刷题Python】 LeetCode 2038. 如果相邻两个颜色均相同则删除当前颜色
本文介绍了LeetCode 2038题的解法,题目要求在一个由'A'和'B'组成的字符串中,按照特定规则轮流删除颜色片段,判断Alice是否能够获胜,并提供了Python的实现代码。
36 3
|
1月前
|
算法 Python
【Leetcode刷题Python】剑指 Offer 33. 二叉搜索树的后序遍历序列
本文提供了一种Python算法,用以判断给定整数数组是否为某二叉搜索树的后序遍历结果,通过识别根节点并递归验证左右子树的值是否满足二叉搜索树的性质。
15 3
|
1月前
|
Python
【Leetcode刷题Python】50. Pow(x, n)
本文介绍了LeetCode第50题"Pow(x, n)"的解法,题目要求实现计算x的n次幂的函数,文章提供了递归分治法的详细解析和Python实现代码。
15 1
|
1月前
|
Python
【Leetcode刷题Python】LeetCode 478. 在圆内随机生成点
本文介绍了LeetCode 478题的解法,题目要求在给定圆的半径和圆心位置的情况下实现在圆内均匀随机生成点的功能,并提供了Python的实现代码。
17 1
|
1月前
|
算法 Python
【Leetcode刷题Python】295. 数据流的中位数
本文介绍了一种使用Python实现的数据结构,用以支持数据流中添加整数并返回当前所有元素的中位数,通过排序列表来计算中位数。
14 1