[英]C-Program Determine the largest substring in a char array without 'e' or 'E'
我有标题中所述的问题。 这里更多细节。
我的问题是:
a)开发一个C函数,该函数获取一个char数组作为输入参数,并确定该char数组中最大的子字符串,而不用'e'
'E'
。 打印该子字符串的长度。
b)编写主要功能以测试a)功能。 使用scanf("%[^\\n]",...)
或使用getchar()
循环
EX:输入:“你是一个。” .output:“ you ar”长度:6
如果使用字符串库函数strtok,则解决方案非常简单。 使用此功能可以为您拉出子字符串,然后您只需跟踪最长的子字符串即可。
temp = strtok(input, "eE");
strcpy(best, temp);
bestLen = strlen(best);
while(temp = strtok(NULL, "eE")) {
if(strlen(temp) > bestLen) {
strcpy(best, temp);
bestLen = strlen(best);
}
}
printf("%s", best);
每当有e或E时,strtok都会分割您的字符串,并将其返回到您的临时指针中。 然后,您可以查看temp值,看看它是否足够长以成为新的最佳长度。
#include<stdio.h>
int main(){
char myStr[30],Str[30];
char ch;
int i = 0, j=0;
gets(myStr);
while(myStr[j] != '\0'){ //Use this to determine any 'e' or 'E' inside the string
if(myStr[j] == 'e' || myStr[j] == 'E'){
j++;
continue;
} else{
Str[i] = myStr[j];
i++;
}
j++;
}
printf("%s length:%d",Str,i--);
return 0;
}
答案表格@ChartesL。的改进:
#include<stdio.h>
int main(){
char myStr[30];
char *ptr;
// read myStr from console
...
char* delim = myStr;
int longest = 0;
char*longestSubStr = null;
for(ptr=myStr; *ptr != '\0'; ptr++)
{
if(*ptr == 'e' || *ptr == 'E')
{
int substrLength = ptr - delim;
if(substrLength > longest)
{
longest = substrLength;
longestSubstr = delim;
}
delim = ptr+1;
}
}
// show longest length in longest
// longest substring starts at longestSubStr, first 'longest' chars
...
return 0;
}
它会保留最后一个定界符 (字符串的开头“ e”或“ E”),并且一旦找到新的定界符,就会计算两个定界符之间的子字符串的长度。 然后确定这些长度中的最长者,并记住迄今为止找到的最长子串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.