当前位置:首页 » 编程语言 » 最长元音子串的长度c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

最长元音子串的长度c语言

发布时间: 2022-08-03 16:21:27

1. 如何使用c语言求解最长公共子字符串问题及相关的算法

假定字符串采用堆分配方式,编写一个程序,求两个字符串S和T的一个最长公共子串

本题的思路:
本题要实现的算法扫描两个字符串。其中index指出最长公共子串在s中的序号,length指出最长公共子串的长度

堆分配存储表示如下:
typedef struct{
char *ch;
int length;
}Hstring;

Status MaxComString(Hstring S,Hstring T,int &length){

index=0;
length=0;
i=0;

//令i作为扫描字符串S的指针
while(i<S.length){
j=0;
//令j作为扫描字符串T的指针
while(j<T.length){
if(s.ch[i]==T.ch[j]){
//找一个子串,其在字符串S中的序号为i,长度为length1
length1=i;
for(k=1;S.ch[i+k]==T.ch[j+k];k++)length1++;
if(length1>length){
//将较大长度值赋给index与length
index=i;
length=length1;
}
j=j+length1;//继续扫描字符串T中第j=length1个字符之后的字符
}else{
j++;
}
}//while
i++;
}//while
printf("最长公共子串:");
for(i=0;i<length;i++)printf("%c",S.ch[index+i]);
return OK;
}

2. c语言求字符串长度

C语言中字符串长度的函数是strlen(),一个字符的长度为1;
函数原型:
unsigned int strlen (char *s);头文件:
#include <string.h>参数说明:s为指定的字符串;
功能说明:strlen()用来计算指定的字符串s 的长度,不包括结束字符'\0';
返回值:返回字符串s 的字符数;
注意:strlen() 函数计算的是字符串的实际长度,遇到第一个'\0'结束。
示例:
#include<stdio.h>#include<string.h>int main(){ char str[] = "ab\nxyz";//\n为回车字符,占一个字节 printf("strlen(str)=%d\n", strlen(str)); return 0;}//输出结果:strlen(str)=6 收起

3. C语言:键入一个不超过100字符的字符串,输出其中最长子字符串和它的长度。咋写

代码文本:

#include "stdio.h"

int main(int argc,char *argv[]){

char str[101],i,j,k,x,y,m,f;

printf("Enter a string... str=");

scanf("%100s",str);

for(k=0;str[k];k++);

for(f=m=i=0;i<k;i++)

for(j=k-1;j>i;j--)

if(str[j]==str[i]){

for(y=j,x=i;x<y;x++,y--)

if(str[x]-str[y])

break;

if(x>=y && m<=j-i){

m=j-i+1;

f=i;

break;

}

}

printf(" The longest palindromic substring is '");

for(i=0;i<m;putchar(str[f++]),i++);

printf("' The length is %d ",m);

return 0;

}

4. C语言中字符串的长度如何比较例如:输入5个字符,输入其中最长的字

可以用strlen函数来求取字符串的长度,然后进行比较,得出最长的字符串,然后输出即可
示例代码如下:
#include<stdio.h>
#include<string.h>
void main()
{
char s[5][20];

int a[5]; //用于储存字符串长度的数组

int i,max;

for(i=0;i<5;i++)

{

gets(s[i]); //输入字符串

a[i]=strlen(s[i]); //求取字符串长度,并用数组保存

}

max=a[0];

for(i=0;i<5;i++)
if(a[i]>max)

max=a[i];

for(i=0;i<5;i++)
{

if(a[i]==max)

{

puts(s[i]);

break;

}

}

}

5. c语言 计算字符串长度

C语言的字符串是由字符数组形式保存的,并约定''(ascii码值为0)作为字符串结束符。其长度为从字符串开始,到''结束,所有字符的个数,不包括''本身。

要获得字符串长度,有两种方法可以使用,使用库函数strlen()。strlen声明在string.h中,原型为int strlen(char *str);功能为求str的长度,并返回。对于字符串str, 可以用代码求长度。当str[len]为0时,退出循环,退出后的len值就是str的长度。

拓展资料:使用strlen函数,包含在头文件string.h里,功能就是计算字符串s的(unsigned int型)不包括''在内的长度。

6. C语言编程 查找两字符串的最长公共子串 如"I am a student."与"R u a student"最长公共子串是"student"

//有个问题是,空格应该也算字符吧,所以没考虑空格。就像你那个例子,最长公共字串应该是//“student”,包含空格.还有,就是我这个应该不是很好的方法,效率比较低,我是先让串//1不动,串2先从第1个字符开始与串1比较,然后串2从第2个字符开始于串1比较,都比较完了,///串1向右挪动一个位置
#include<stdio.h>
intmain()
{
charstr1[100]={0},str2[100]={0};
printf("pleaseinputtwostrings: ");
gets(str1);//读入字串
gets(str2);
char*p1=str1;//分别用来存str1和str2的当下比较位置
char*p2=str2;
intmax=0,num=0;//max存放比较后最长字串长度,num是这一轮比较公共字串长度
char*start;//存放最大串起始位置
while(*p1!='')//先是串1大循环
{
p2=str2;//p2是串2首地址
while(*p2!='')
{
char*begin=p1;//begin是串1当前比较位置
char*begin2=p2;//begin2是串2开始比较位置
num=0;//比较前初始化为0
while(*begin!=''&&*begin2!='')//一轮新的比较
{
if(*begin==*begin2)//若相同,num++;
{num++;begin++;begin2++;}
elsebreak;
}
if(num>max)//若新比较出的字串更长,则替换max值和start内容
{max=num;
start=p1;}
p2++;//串2右移1位
}
p1++;//串1右移1位
}
while(max--)//输出串
printf("%c",*start++);
printf(" ");
}

7. C语言:“最长公共子串” 高手帮忙编个

描述]
现在有一些由英文字符组成的大小写敏感的字符串,你的任务是找到一个最长的字符串[x],使得对于已经给出的字符串中的任意一个y,[x]或[反序后的x]是y的子串。

[关于输入]
输入的第一行是一个整数t (1 <= t <= 10),t表示测试数据的数目。对于每一组测试数据,第一行是一个整数n (1 <= n <= 100),表示已经给出n个字符串。接下来n行,每行给出一个长度在1和100之间的字符串。

[关于输出]
对于每一组测试数据,输出一行,给出题目中要求的字符串x的长度。

8. C语言 最长公共子串

首先指出楼主的错误
最长的公共子字符串 应该改成 最长的连续公共子字符串
下面是符合楼主要求的参考代码
//作者:hacker
//时间:9.12.2006
#include <stdio.h>
#include <string.h>

void main()
{
char* x="aabcdababce";
char* y="12abcabcdace";
int m = strlen(x);
int n = strlen(y);
int i, j, k, l;
int maxlength = 0;
int start = 0;
int count = 0;//用来判断是否匹配的变量

for (i=1;i<=n;i++)//匹配长度的循环
for (j=0;j<n-i+1;j++)//y的起始位置的循环
for (k=0;k<m-i+1;k++)//x的起始位置的循环
{
count = 0;
for (l=0;l<i;l++)//判断是否匹配,代码可以优化
if (y[j+l] == x[k+l])
count++;
if (count==i&&i>maxlength)
{
maxlength = i;//记录最大长度
start = j;//记录最大长度的起起位置
}
}

//作者:hacker
//时间:9.12.2006
#include <stdio.h>
#include <string.h>

void main()
{
char* x="aabcdababce";
char* y="12abcabcdace";
int m = strlen(x);
int n = strlen(y);
int i, j, k, l;
int maxlength = 0;
int start = 0;
int count = 0;//用来判断是否匹配的变量

for (i=1;i<=n;i++)//匹配长度的循环
for (j=0;j<n-i;j++)//y的起始位置的循环
for (k=0;k<m-i;k++)//x的起始位置的循环
{
count = 0;
for (l=0;l<i;l++)//判断是否匹配,代码可以优化
if (y[j+l] == x[k+l])
count++;
if (count==i&&i>maxlength)
{
maxlength = i;//记录最大长度
start = j;//记录最大长度的起起位置
}
}

if (maxlength==0)
printf("No Answer");
else
for (i=0;i<maxlength;i++)
printf("%c",y[start+i]);
}

}
下面是真正的最长公共子串的动态规划算法
//作者:hacker
//时间:9.12.2006

#include <stdio.h>
#include <string.h>

int b[50][50];
int c[50][50];

void lcs(x,m,y,n)
char *x;
int m;
char *y;
int n;
{
int i;
int j;

for (i=1;i<=m;i++) c[i][0] = 0;
for (i=1;i<=n;i++) c[0][i] = 0;
c[0][0] = 0;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
{
if (x[i-1] == y[j-1])
{
c[i][j] = c[i-1][j-1] + 1;
b[i][j] = 1;
}
else
if (c[i-1][j] > c[i][j-1])
{
c[i][j] = c[i-1][j];
b[i][j] = 2;
}
else
{
c[i][j] = c[i][j-1];
b[i][j] = 3;
}

}
}

void show(i,j,x)
int i;
int j;
char* x;
{
if (i==0||j==0)
return;
if (b[i][j]==1)
{
show(i-1,j-1,x);
printf("%c",x[i-1]);
}
else
if (b[i][j]==2)
show(i-1,j,x);
else
show(i,j-1,x);
}

void main()
{
char* x="aabcdababce";
char* y="12abcabcdace";
int m = strlen(x);
int n = strlen(y);
lcs(x,m,y,n);
show(m,n,x);

}

9. c语言计算给定字符串包含的最长对称字符串的长度

#include "stdio.h"
#include "string.h"
int main(void)
{
char c[100],tmpc[100];
int len,i,j,k=0,max=0;
scanf("%s",c);
len=strlen(c);
for(i=0;i<len;i++)//将字符串中的所有子串用huihuan函数验证一遍,虽然比较笨,但好理解
{
k=0;
for(j=i;j<len;j++)
{
tmpc[k]=c[j];
tmpc[++k]=0;
if(huihuan(tmpc))
{
if(k>max)max=k;//如果当前回环串的长度大于最长回环串长度,修改max
}
}
}
printf("%d",max==1?0:max);//为1也表示没有,改为题目中要求的0
return 0;
}
int huihuan(char *c)//验证一个字符串是否为回环串的函数
{
int len=strlen(c),i;
if(!len)return 0;
for(i=0;i<len/2;i++)
{
if(!(c[i]==c[len-1-i]))return 0;
}
return 1;
}