前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >力扣刷题篇——字符串

力扣刷题篇——字符串

作者头像
王同学要努力
发布2022-12-20 17:13:41
2620
发布2022-12-20 17:13:41
举报

                                                                        目录🎁

                                                            2278 题目描述💎: 

                                                               解题思路💎:

                                                            代码附上 💎:

                                                        551 题目描述💎:

                                                             解题思路:💎

                                                               代码附上💎: 

                                                           2255.题目描述:💎

                                                           解题思路💎:

                                                                 代码附上💎: 

                                                         1071 题目描述💎:

                                                            解题思路💎:

                                                              代码附上💎: 

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();
  • 迭代一次遍历 最后按要求输出计算结果

代码附上 💎:

代码语言:javascript
复制
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,反正将连续迟到次数清零

代码附上💎: 

代码语言:javascript
复制
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 中出现多次,它们应该被计数多次。

解题思路💎:

  • 这道题思路还是很清晰的
  • 首先一个枚举 接着一个判定
  • 定义一个方法判断是否是给定字符串的前缀

代码附上💎: 

代码语言:javascript
复制
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 应该是相等的 如果不满足,那么不存在最大公约数 我们可以通过 两个字符串的长度来求得最大公约数的长度

代码附上💎: 

代码语言:javascript
复制
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);
    }
}

                                    题目目录🎈🎈

题目

难度

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

★☆☆☆

551.学生出勤记录

★☆☆☆

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

★★☆☆

1071.字符串的最大公因子

★★☆☆

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2278 题目描述💎: 
  •  解题思路💎:
  • 代码附上 💎:
  • 551 题目描述💎:
  • 解题思路:💎
  • 代码附上💎: 
  • 2255.题目描述:💎
  • 解题思路💎:
  • 代码附上💎: 
  • 1071 题目描述💎:
  • 解题思路💎:
  • 代码附上💎: 
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档