力扣刷题篇——字符串

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

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);
    }
}

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






相关文章
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
280页PDF,全方位评估OpenAI o1,Leetcode刷题准确率竟这么高
【10月更文挑战第24天】近年来,OpenAI的o1模型在大型语言模型(LLMs)中脱颖而出,展现出卓越的推理能力和知识整合能力。基于Transformer架构,o1模型采用了链式思维和强化学习等先进技术,显著提升了其在编程竞赛、医学影像报告生成、数学问题解决、自然语言推理和芯片设计等领域的表现。本文将全面评估o1模型的性能及其对AI研究和应用的潜在影响。
11 1
|
15天前
|
JavaScript
力扣3333.找到初始输入字符串Ⅱ
【10月更文挑战第9天】力扣3333.找到初始输入字符串Ⅱ
30 1
|
2月前
|
数据采集 负载均衡 安全
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
本文提供了多个多线程编程问题的解决方案,包括设计有限阻塞队列、多线程网页爬虫、红绿灯路口等,每个问题都给出了至少一种实现方法,涵盖了互斥锁、条件变量、信号量等线程同步机制的使用。
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
|
30天前
|
C++
Leetcode第43题(字符串相乘)
本篇介绍了一种用C++实现的字符串表示的非负整数相乘的方法,通过逆向编号字符串,将乘法运算转化为二维数组的累加过程,最后处理进位并转换为字符串结果,解决了两个大数相乘的问题。
23 9
|
30天前
|
算法 C++
Leetcode第八题(字符串转换整数(atoi))
这篇文章介绍了LeetCode上第8题“字符串转换整数(atoi)”的解题思路和C++的实现方法,包括处理前导空格、正负号、连续数字字符以及整数溢出的情况。
15 0
|
30天前
【LeetCode 22】459.重复的子字符串
【LeetCode 22】459.重复的子字符串
27 0
|
30天前
【LeetCode 20】151.反转字符串里的单词
【LeetCode 20】151.反转字符串里的单词
17 0
|
30天前
【LeetCode 19】541.反转字符串II
【LeetCode 19】541.反转字符串II
19 0
|
30天前
【LeetCode 18】6.2.反转字符串
【LeetCode 18】6.2.反转字符串
14 0