给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。
思路:从后往前遍历字符串,需要特别注意的就是比如这种情况“kk uu ” 最后含有空格的。需要先把空格去除掉,这里出示设定一个标志位为1,当从后往前遍历检测到一个非空字符时,设定标志位为0,只要我们再次检测到空格且标志位为0,那么检测结束。
class Solution { public: int lengthOfLastWord(string s) { if(s.empty()) return 0; int num = 0; int flag = 1; for (int i = s.size()-1;i>=0;i--) { if(flag && s[i] ==' ') //当后面是空格时直接进入下一循环 { continue; } if(flag && s[i] !=' ') //当检测第一个非空字符时,使能标志位为0 { num++; flag = 0; continue; } if(s[i] == ' '&&flag==0) //当标志位为0且为空字符时,检测结束 break; num++; } return num; } };参考链接: https://leetcode-cn.com/problems/length-of-last-word/
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。
思路:从后往前遍历,三种情况:,利用逢9进1,是9则为0,不为9则加一返回。特殊情况是最高位如果是0,则需要在最前端插入1.
给定整数中最后一位不是数字999(如123412341234); 给定整数中最后一位是数字999,但不全是数字999(如109910991099); 给定整数所有位全是数字999(如999999999999)。
class Solution { public: vector<int> plusOne(vector<int>& digits) { for (int i = digits.size()-1;i>=0;i--) { if(digits[i]==9) { digits[i] =0; } else { digits[i] += 1; break; } } if(digits[0] == 0) { digits.insert(digits.begin(), 1); } return digits; } };参考链接:https://leetcode-cn.com/problems/plus-one/