查找并输出字符串中最长的单词

//

//  main.m

//  SundayOne

//

//  Created by dllo on 15/7/4.

//  Copyright (c) 2015 Clare. All rights reserved.

//


#import <Foundation/Foundation.h>


int main(int argc, const char * argv[]) {

    //找出一段字符串中的最长单词

    

    char str[] = "ni hao world nihao ";

    int maxCount = 0; // 最长单词的长度

    int len = 0;// 中间变量即每个单词的长度

    int max= 0;// 最长单词开始的位置

    for (int i = 0; i < strlen(str); i++) { // i不能大于字符串的长度

        if (str[i] != ' '&& str[i] != '\0') { // 如果我的第i个字符不为空也不是结束的时候执行此处

            len++; // 让中间变量自增1

            if (maxCount < len) { // 如果我的最长单词的长度小于我的中间变量执行此处

                maxCount = len; // 将中间变量的值赋给最长单词的值

                max = i - maxCount +1; // 最长单词的起始地址就是当前的单词地址减去最长单词地址后再加1,注意此处的max会出现值相同的时候,是因为没一个单词的起始位置都一样

            }

        }else{ // 如果我的第i个字符为空格或者结束执行此处

            len = 0; // 让中间变量清零

        } // 中间变量清零后再执行此循环让len重新计数

    }

    printf("最长的单词从第%d位开始\n",max); // 输出最长单词的起始地址

    printf("最长的单词是:");

    for (int i = max; i < maxCount + max; i++) { // i等于最长单词的起始位置,并且小于最长单词的结束位置

        printf("%c",str[i]); // 输出第i个位置上的字符,程序到次结束.但是要注意如果有两个相同长度的最长单词是只能输出第一个最长的单词,第二个还未输出,此处有待改进,但是如果将 maxCount < len 处改为 maxCount <= len 输出的就为第二个最长的单词

    }

    printf("\n");

    return 0;

}


  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值