跟着英雄哥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 "";
}
}
};
总结
今天的字符串都挺简单的