#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int finding(char a[],char b[])
{ char c[100]={0},d[200000]={0};
int flag=0;
int k;
for(int i=0;i<strlen(a);i++)
c[i]=toupper(a[i]);
for(int i=0;i<strlen(b);i++)
{if(b[i]==' ')
d[i]=b[i];
else
d[i]=toupper(b[i]);}
if((strlen(c)==strlen(d))&&(strcmp(c,d)==0))
{
printf("1");
return 0;
}
else{for(int i=0;i<strlen(d);i++)
{ if(strncmp(d,c,strlen(c))==0&&d[strlen(c)]==' ')
{
flag=1;
k=0;
break;
}
else {if(i+strlen(c)!=strlen(d))
{if((strncmp(d+i,c,strlen(c))==0)&&(d[i-1]==' ')&&d[i+strlen(c)]==' ')
{
flag=1;
k=i;
break;
}}
else {if((strncmp(d+i,c,strlen(c))==0)&&(d[i-1]==' '))
{
flag=1;
k=i;
break;
}
}}}}
if(flag==0) {printf("None");
return 0;}
else printf("%d",k+1);
return 0;
}
void main()
{
int cnt;
scanf("%d ",&cnt);
for(int i=0;i<cnt;i++)
{
char a[100],b[200000];
gets(a);
gets(b);
printf("case #%d:\n",i);
finding(a,b);
printf("\n");
}
}
uj5u.com熱心網友回復:
有一個單詞 W,輸出它在字串 S 中從左到右第一次出現的位置 IDX(設 S 中的第 1 個字符的位置為 1)。W 只由英文字母組成,S 除英文字母和漢字之外在任何位置(包括頭和尾)另有一個或多個連續的空格。
查找單詞時,不區分大小寫,但要求完全匹配,即單詞 W 必須與 S 中的某一獨立單詞在不區分大小寫的情況下完全匹配。W 僅是 S 中某一單詞的一部分就不算匹配。
輸入格式
第 1 行:一個整數 T (1≤T≤10) 為問題數。
接下來共 2T 行,對應每個問題有 2 行,表示 W 和 S (1≤W長度≤10;1≤S長度≤1000000)。
輸出格式
對于每個問題,輸出一行問題的編號(0 開始編號,格式:case #0: 等)。
然后對應每個問題在一行中輸出 IDX。
S 中沒有找到 W 時輸出 None。
樣例
Input
3
IN
Find a word within a string in English and in Chinese.
to
Find a word within a string in English and in Chinese.
In
Find a word within a string in English and in Chinese.
Output
case #0:
29
case #1:
None
case #2:
33
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/107182.html
標籤:C語言
下一篇:cc1plus.exe: error: unrecognized command line option "-fpch-preprocess"
