题目来源于知识星球—英雄算法联盟,六月算法集训专题
目录
前言
跟随英雄算法联盟博主—英雄哪里出来,每天完成相应的算法练习,一个月后,必定会有所成长!
一、2278.字母在字符串中的百分比(简单)
1.题目描述
2.解题思路
使用一个计数器,遍历字符串数组,当数组中的元素与letter中的元素相同时,
计数器++,最后计算百分比即可。
3.代码演示(C++)
class Solution
{
public:
int percentageLetter(string s, char letter)
{
int n=s.length();
int a=0;
for(int i=0;i<n;i++)
{
if(s[i]==letter)
{
a++;
}
}
return a*100/n;
}
};
4.题目链接
二、551.学生出勤记录I(简单)
1.题目描述
2.解题思路
先统计学生缺勤的次数,如果一名学生缺勤次数大于等于2次,那么返回false;
其次如果一名学生连续三天迟到,也返回false;除这两种情况之外,均返回true。
3.代码演示(C++)
class Solution
{
public:
bool checkRecord(string s)
{
int a=0;
int n=s.length();
for(int i=0;i<n;i++)
{
if(s[i]=='A')
{
a++;//记录缺勤的次数
if(a>=2)
{
return false;
}
}
if(i+2<n)
{
if(s[i]=='L'&&s[i+1]=='L'&&s[i+2]=='L')
{
return false;
}
}
}
return true;
}
};
4.题目链接
三、2255.统计是给定字符串前缀的字符串数目(简单)
1.题目描述
2.解题思路
使用find函数来判断words数组中的元素是否为s的前缀,如果是,则计数器++。
3.代码演示(C++)
class Solution
{
public:
int countPrefixes(vector<string>& words, string s)
{
int k=0;
for(string i:words)
{
if(s.find(i)==0)
{
k++;
}
}
return k;
}
};
4.题目链接
四、1071.字符串的最大公因子(简单)
1.题目描述
2.解题思路
代码来源于官方题解。
3.代码演示(C++)
class Solution
{
bool check(string t,string s)
{
int lenx = (int)s.length() / (int)t.length();
string ans = "";
for (int i = 1; i <= lenx; ++i)
{
ans = ans + t;
}
return ans == s;
}
public:
string gcdOfStrings(string str1, string str2)
{
int len1 = (int)str1.length(), len2 = (int)str2.length();
for (int i = min(len1, len2); i >= 1; --i)
{ // 从长度大的开始枚举
if (len1 % i == 0 && len2 % i == 0)
{
string X = str1.substr(0, i);
if (check(X, str1) && check(X, str2)) return X;
}
}
return "";
}
};
4.题目链接
总结
每天跟随英雄哥学习相关的算法,一个月会收获很多,如果你想了解更多关于知识星球的内容,欢迎联系我!