又是缺乏目标和信心的一周呢,记录一下练习的题目,加油。
贴代码,这一题逻辑上来讲不太难,经过几次修改后,成功通过了样例。
使用双指针比较字符串。
判断两个条件
1、需要符合匹配较长的那一个字符串。
2、若有多个符合同时字符个数一致,则输出字符值较小的一个。
char * findLongestWord(char * s, char ** dictionary, int dictionarySize){
char* ret = "";
char* tempSrc = s;
char* tempDic;
int i = 0;
int currNo = -1;
int currNum = 0;
for (i = 0; i < dictionarySize; i++)
{
tempDic = dictionary[i];
tempSrc = s;
if (*tempDic == '\0')
{
continue;
}
while (*tempSrc != '\0')
{
if (*tempSrc == *tempDic)
{
tempSrc++;
tempDic++;
if (*tempDic == '\0')
{
break;
}
}
else
{
tempSrc++;
}
}
if (*tempDic == '\0')
{
if (strlen(dictionary[i]) > currNum)
{
currNo = i;
currNum = strlen(dictionary[i]);
}
else if (strlen(dictionary[i]) == currNum)
{//比较字母大小
if (strcmp(dictionary[i], dictionary[currNo]) < 0)
{
currNo = i;
currNum = strlen(dictionary[i]);
}
}
}
}
if (currNo == -1)
{
return ret;
}
return dictionary[currNo];
}