方正面试的题-找出字符串最多的分解方法
2011-09-18 21:55
281 查看
有长度m(>3)的字符串M,另有n个3个字符长度的子字符串,可以是重叠的,(如123,231,),
分解字符串M,搜索与子字符串一样的字符串个数,并找出最多的分解方法。
#include<iostream>
using namespace std;
char m[100][4];
char b[1000];
int c[997];
int strcpy1(char *s1,char *s)
{
int i,j,count=0,count1=0,k;
int flag[3]={0};
for(i=1;i<=strlen(s)/3;i++)
{
for(k=(i-1)*3;k<i*3;k++)
{
for(j=0;j<strlen(s1);j++)
{
if(s[k]==s1[j]&&!flag[j])
{
break;
}
}
if(j<strlen(s1))
count++;
}
if(count==3)
{
memset(flag,0,3);
count=0;
count1+=1;
}
else
{
count=0;
}
}
return count1;
}
int main()
{
int n,i,j,max=0,m1=0;
cin>>n;
for(i=0;i<n;i++)
cin>>m[i];
cin>>b;
for(j=0;j<strlen(b)-3;j++)
{
for(i=0;i<n;i++)
{
m1+=strcpy1(m[i],b+j);
}
if(m1>max)
{
max=m1;
}
m1=0;
}
cout<<max<<endl;
return 0;
}
分解字符串M,搜索与子字符串一样的字符串个数,并找出最多的分解方法。
#include<iostream>
using namespace std;
char m[100][4];
char b[1000];
int c[997];
int strcpy1(char *s1,char *s)
{
int i,j,count=0,count1=0,k;
int flag[3]={0};
for(i=1;i<=strlen(s)/3;i++)
{
for(k=(i-1)*3;k<i*3;k++)
{
for(j=0;j<strlen(s1);j++)
{
if(s[k]==s1[j]&&!flag[j])
{
break;
}
}
if(j<strlen(s1))
count++;
}
if(count==3)
{
memset(flag,0,3);
count=0;
count1+=1;
}
else
{
count=0;
}
}
return count1;
}
int main()
{
int n,i,j,max=0,m1=0;
cin>>n;
for(i=0;i<n;i++)
cin>>m[i];
cin>>b;
for(j=0;j<strlen(b)-3;j++)
{
for(i=0;i<n;i++)
{
m1+=strcpy1(m[i],b+j);
}
if(m1>max)
{
max=m1;
}
m1=0;
}
cout<<max<<endl;
return 0;
}
相关文章推荐
- 方正面试的题-找出字符串最多的分解方法
- 改进JAVA字符串分解的方法
- 找出字符串中出现次数最多的字母和出现次数,超精简版,欢迎拍板
- LeetCode | 763. Partition Labels 中等偏难贪心算法 把一个字符串划分为有独立字母的最多组的划分方法
- 找出给定字符串中出现最多的字符和次数
- 求一个字符串中连续出现次数最多的字串.[面试宝典14.5节]
- 两种分解整数为字符串的方法 阿姆斯特朗数
- 改进JAVA字符串分解的方法
- 【Java】有个排序后的字符串数组,其中散布着一些空字符串,编写一个方法,找出给定字符串的位置
- 找出字符串里出现最多的第一个字母
- java方法根据符号分解字符串
- 找出字符串中出现次数最多的字
- 如何使用String中的Split方法来按照“分隔符”来分解字符串,可以直接运行
- HDU 1004.Let the Balloon Rise【找出出现次数最多的字符串】
- 字符串中找出最长的数字串 【微软面试100题 第二十五题】
- java字符串分解 StringTokenizer用法(比split()方法效率高)
- python实现从字符串中找出字符1的位置以及个数的方法
- 找出字符串中连续出现次数最多的子串
- 瑞恩面试编程题:找出数组中出现次数最多且最大的那个数及出现的次数
- js实现找出字符串中出现字数最多的字符并计算其出现次数