编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,用空格来分隔单词。

来源:互联网 发布:python 参数 编辑:程序博客网 时间:2024/04/24 23:55

char str[] ="zhengzhou is a big city";

    int maxLength =0;//存储最长单词长度.

    int length =0; //用来记录单词的长度.

    int maxIndex =0;//记录最长单词开始的下标

    //使用while循环对字符串进行遍历.

    int i =0;

    while (str[i] !='\0') {

        if (str[i] !=' ') {

            length++;

        }else{

            if (length > maxLength) {

                maxLength = length;

                maxIndex = i - maxLength;

            }

            length = 0;//读到空格时,将length清零,记录下一个单词的长度

        }

        i++;

    }

    //如果最后一个单词后面没有空格直接到\0,并且最后一个单词的长度也是最长的,此时就会缺少一个和maxlength比较的过程,所有我们只需要在while循环的外部加上比较操作即可.

        if (length > maxLength) {

            maxLength = length;

            maxIndex = i - maxLength;

        }

      printf("maxLength = %d",maxLength);

    //输出最长单词.

    printf("\n最长单词为:");

//    for (int i =maxIndex; i < maxLength + maxIndex; i ++) {

//        printf("%c",str[i]);

//    }

      i = 0;//i回到第一个位置

    length = 0;//长度清零

    while (str[i] !='\0') {

        if (str[i] !=' ') {

            length++;

        }else{

            if (length == maxLength) {//一旦找到和最长单词长度相等的单词,就 立即输出该单词

                for (int j =i - maxLength; j < i; j ++) {

                    printf("%c",str[j]);

                }

                printf("\n");

                }

            length = 0;

        }

        i++;

        }

    if (length == maxLength) {//一旦找到和最长单词长度相等的单词,就 立即输出该单词

        for (int j =i - maxLength; j < i; j ++) {

            printf("%c",str[j]);

        }

        printf("\n");

    }

0 0