25 最长最短单词

来源:互联网 发布:中国税务报网络报检索 编辑:程序博客网 时间:2024/05/22 06:15

原题  最长最短单词

类似题目:317最长单词

思路都是用gets读入一个句子,然后历遍每个单词判断

代码如下:(AC)

#include<iostream>#include<stdio.h>#include<string.h>using namespace std;int main(){char s[20210],word[205][105];int minRow, maxRow,minlen,maxlen, i ,j,p;while (gets(s)){minRow = maxRow = 0;minlen = 1 << 20;maxlen = -1;j=p = -1;i = 0;while (s[++p] != '\0'){if ((s[p] >= 'a'&&s[p] <= 'z') || (s[p] >= 'A'&&s[p] <= 'Z'))word[i][++j] = s[p];else{word[i][++j] = '\0';if (j>0&&j > maxlen){maxlen = j;maxRow = i;}if (j>0&&j < minlen){minlen = j;minRow = i;}++i;j = -1;}}word[i][++j] = '\0';if (j>0&&j> maxlen){maxlen = j;maxRow = i;}if (j>0&&j < minlen){minlen = j;minRow = i;}for (int i = 0; i < maxlen; i++)printf("%c", word[maxRow][i]);printf("\n");for (int i = 0; i < minlen; i++)printf("%c",word[minRow][i]);printf("\n");}return 0;}

此题坑点:

单词之间可能由多个空格,之前一直是8分,原因出在对最小字符的判断上

if (j>0&&j < minlen){
minlen = j;minRow = i;}
注意要有j>0才能更新,否则最小单词可能会被更新成空格


0 0
原创粉丝点击