目录🎁
给你一个字符串 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 。
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;
}
}
给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符: 'A':Absent,缺勤 'L':Late,迟到 'P':Present,到场 如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励: 按 总出勤 计,学生缺勤('A')严格 少于两天。 学生 不会 存在 连续 3 天或 连续 3 天以上的迟到('L')记录。 如果学生可以获得出勤奖励,返回 true ;否则,返回 false 。 示例 1: 输入:s = "PPALLP" 输出:true 解释:学生缺勤次数少于 2 次,且不存在 3 天或以上的连续迟到记录。 示例 2: 输入:s = "PPALLL" 输出:false 解释:学生最后三天连续迟到,所以不满足出勤奖励的条件。
'A'
)严格 少于两天。'L'
)记录。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;
}
}
给你一个字符串数组 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;
}
}
对于字符串 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" 输出:""
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.字符串的最大公因子 | ★★☆☆ |
以上就是小王同学给大家带来的力扣刷题-字符串篇