【Leetcode-58.最后一个单词的长度 -66.加一】

简介: 【Leetcode-58.最后一个单词的长度 -66.加一】

Leetcode-58. 最后一个单词的长度

题目:给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。单词是指仅由字母组成、不包含任何空格字符的最大子字符串。

我们的思路是,从后往前遍历,当遇到空格就跳过,当遇到第一个有效字符时,就开始进入循环统计,当再次遇到空格或者i越界访问就结束循环,返回当前ret的值;

下面看代码和注释:

int lengthOfLastWord(char* s)
    {
        //从后往前遍历
        int len = strlen(s);
        int i = len - 1;
        int ret = 0;
        //跳过空格
        while (isspace(s[i]))
        {
            i--;
        }
        //统计有效字符个数,当i越界时结束循环
        for (; i >= 0; i--)
        {
            //当遇到空格结束循环,返回结果
            if (isspace(s[i]))
            {
                break;
            }
            else
            {
                //遇到有效字符统计
                ret++;
            }
        }
        return ret;
    }

Leetcode-66. 加一

题目:给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。

我们的思路是,从后往前遍历,判断最后一位是否是9,若是9,如1,2,3,9,则改成0,继续判断下一位,当下一位不是9,就加1,返回这个数组,即返回1,2,4,0;若这个数组全是9,如9,9,9,9,则跳出循环后,需要开辟一个新的空间,由于需要将它初始化为0,我们可以用calloc,长度为原来的长度+1,我们只需将第一位元素改成1即可,即1,0,0,0,0;

下面看代码和注释:

int* plusOne(int* digits, int digitsSize, int* returnSize)
    {
        //i从最后一位开始遍历
        int i = digitsSize - 1;
        for (; i >= 0; i--)
        {
            //先将最后一位的数字+1,判断是否是10
            digits[i] += 1;
            if (digits[i] != 10)
            {
                //不等于10的话直接返回数组,*returnSize是返回数组的长度
                *returnSize = digitsSize;
                return digits;
            }
            //如果等于10,将这一位置成0,继续判断下一位
            else if (digits[i] == 10)
            {
                digits[i] = 0;
            }
        }
        //若数组中的数字全是9,即digits[i]+1全是10,就跳到这里
        //我们需要开辟一个新的空间,大小为digitsSize + 1,元素均为0;
        //只需要将第一位改成1即可,然后返回这个数组
        int* arr = (int*)calloc(digitsSize + 1, sizeof(int));
        assert(arr);
        arr[0] = 1;
        *returnSize = digitsSize + 1;
        return arr;
    }
目录
相关文章
|
2月前
Leetcode(最后一个单词长度)
这篇文章介绍了两种解决LeetCode第58题的方法,即计算给定字符串中最后一个单词的长度,方法包括翻转字符串和逆向遍历统计。
22 0
|
2月前
【LeetCode 20】151.反转字符串里的单词
【LeetCode 20】151.反转字符串里的单词
20 0
|
4月前
|
算法
LeetCode第58题最后一个单词的长度
LeetCode第58题"最后一个单词的长度"的解题方法,通过从字符串末尾向前遍历并计数非空格字符,直接得出最后一个单词的长度。
LeetCode第58题最后一个单词的长度
|
4月前
|
算法 JavaScript Python
【Leetcode刷题Python】79. 单词搜索和剑指 Offer 12. 矩阵中的路径
Leetcode第79题"单词搜索"的Python解决方案,使用回溯算法在给定的二维字符网格中搜索单词,判断单词是否存在于网格中。
50 4
|
4月前
|
Python
【Leetcode刷题Python】生词本单词整理
文章提供了一个Python程序,用于帮助用户整理和排版生词本上的单词,包括去除重复单词、按字典序排序,并按照特定的格式要求进行打印排版。
44 3
|
4月前
|
Python
【Leetcode刷题Python】318. 最大单词长度乘积
本文提供了LeetCode题目318的Python编程解决方案,题目要求在一个字符串数组中找出两个不含有公共字母的单词,且这两个单词的长度乘积最大,如果不存在这样的两个单词,则返回0。
21 0
|
6月前
|
算法
【LeetCode刷题】滑动窗口解决问题:串联所有单词的子串(困难)、最小覆盖子串(困难)
【LeetCode刷题】滑动窗口解决问题:串联所有单词的子串(困难)、最小覆盖子串(困难)
|
6月前
|
存储 SQL 算法
LeetCode题58: 5种算法实现最后一个单词的长度【python】
LeetCode题58: 5种算法实现最后一个单词的长度【python】
|
6月前
|
算法 测试技术 索引
力扣经典150题第三十二题:串联所有单词的子串
力扣经典150题第三十二题:串联所有单词的子串
28 0
|
6月前
|
算法
力扣经典150题第二十一题:反转字符串中的单词
力扣经典150题第二十一题:反转字符串中的单词
69 0