题目:https://www.dotcpp.com/oj/problem2281.html
解题思路:
1 字符串排序
2 字符串末尾加’A’(其它非’a’-'z’的字符都行),用于减少判断条件。
3 初始化指针i,j,分别指向位置0、1。
4 循环,如果位置i、j指向的字符串值相等则 j 后移,若不等则说明 i 指向的字符已经遍历完,可以统计数量了,统计数量的方法如代码所示。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
string s;
int max=0,min=1000;
int i=0,j=1;
cin>>s;
sort(s.begin(),s.end());
s = s+'A';
while(j<s.length()){
if(j == s.length() || s[j] != s[i] ){
max = (j-i)>max ? (j-i) : max;
min = (j-i)<min ? (j-i) : min;
i = j;
j = i+1;
}else{
j++;
}
}
cout<<min<<endl;
cout<<max-min;
return 0;
}```
该程序首先对输入字符串进行排序,然后在排序后的字符串中寻找最长的相同子串。通过在每个子串末尾添加A来简化比较过程,使用两个指针i和j遍历字符串,更新最大和最小长度。
850

被折叠的 条评论
为什么被折叠?



