外贸行业建站,手机网站建设进度,哪里有网站开发服务器,中国建筑是国企还是央企题目#xff1a; 函数原型#xff1a; int lengthOfLastWord(char * s) 解析#xff1a; 求最后一个单词的长度#xff0c;我们有两种思路 第一种思路#xff1a; 逆向求#xff0c;先设置一个字符串下标index#xff0c;定位到最后一个单词的最后一个字符。再一个设置长… 题目 函数原型 int lengthOfLastWord(char * s) 解析 求最后一个单词的长度我们有两种思路 第一种思路 逆向求先设置一个字符串下标index定位到最后一个单词的最后一个字符。再一个设置长度变量n从后向前遍历直到遇到“空格”或者下标index小于0停止遍历每次前移n最后返回长度变量n 关键1如何定位到最后一个单词的最后一个字符 定位到最后一个单词的最后一个字符即定位到字符串中最后一个非空格字符。我们可以通过求字符串长度先定位到字符串的最后一个字符。如果该字符是空格那么下标index前移直到遇到非空格字符。这样我们就可以定位到最后一个单词的最后一个字符 关键2最后一个单词长度即变量n如何求 当我们定位到最后一个单词的最后一个字符时只要继续前移直到遇到空格字符或者下标小于0前移的次数就是变量n的值即最后一个单词的长度 关键3为什么关键2中前移停止条件包含下标小于0呢 因为如果字符串中只有一个单词第一个单词就是最后一个单词那么前移永远无法遇到空格字符就会变为死循环要想停下来下标index必须大于0 int lengthOfLastWord(char * s){
//定位到最后一个单词的最后一个字符
int size strlen(s);
int index size - 1;
while (s[index] )
{index--;
}//设置长度变量n
int n 0;
while (index 0 s[index] ! )
{index--;n;
}return n;
} 第二种思路 正向求先设置好字符串下标index和长度变量n初始值都为0。 从前向后遍历直到遍历完最后一个字符。每次遇到非空格字符要判断一下当前字符的前一个字符是否为空格字符判断条件还要加上index下标大于0如果是则说明此时正在遍历的是一个新的单词前面的已经遍历的一定不是最后一个单词长度变量n要重置为0。如果不是长度变量n。最后返回n。 关键1为什么判断前一个字符是否为空格字符时需要加上index0 因为当判断第一个字符的前一个字符是否为空格字符时s [ index - 1]会越界s[ -1 ]不存在 int lengthOfLastWord(char* s)
{int n 0;int index 0;while (s[index] ! \0)//从前向后遍历字符串{if (s[index] ! ){if (index 0 s[index - 1] )//判断前一个字符是否为空格字符{n 0;//新单词重置长度变量}n;}index;}return n;
}