LeetCode 557-- 反转字符串中的单词 III ( Reverse Words in a String III ) ( C语言 )

题目描述 : 

解题思路 : 计算出空格的个数count , 然后用控制要反转单词顺序的次数 , 用 left 和 right 分别记录每次反转单词的开始和结尾

代码如下 : 

char* reverseWords(char* s) {
    int len=strlen(s);
    if(len<=1)
        return s;
    //count初始化为1,至少要反转一次
    int count=1;
    //计算空格个数
    for(int i=0;i<len;i++){
        if(s[i]==' ')
            count++;
    }
    int left=0;
    int right=0;
    int i=0;
    while(count--){
        //寻找空格的位置
        while(s[i]!=' '&&i<len)
            i++;
        right=i-1;
        i++;
        //反转单词
        while(left<right){
            char cur=s[left];
            s[left]=s[right];
            s[right]=cur;
            left++;
            right--;
        }
        left=i;
    }
    return s;
}

猜你喜欢

转载自blog.csdn.net/ds19980228/article/details/82727534