434. Number of Segments in a String
- 题目描述
计算字符串中的段数,其中段定义为非空格字符的连续序列。注意,该字符串不包含任何不可打印的字符。
Example:
Input: "Hello, my name is John" Output: 5
- 解题思路
1.遍历字串,找到字符段结束的标志,计数3,直到遍历结束。
2.这道题目的关键是找出字符段结束的标志。通过观察,发现当遍历到一个元素不为空格,下一个元素是
空格时,字符段结束,还存在另外一种情况就是遍历到一个元素不为空格,下一个超出数组范围,即字符段
在字符串结尾的情况
- 代码
Java
class Solution {
public int countSegments(String s) {
int i, n = 0;
char[] str = s.toCharArray();
for (i = 0; i < s.length(); i++) {
if (str[i] != ' ')
if (i + 1 < str.length && (str[i + 1] == ' ')||i+1==str.length)
n++;
}
return n;
}
}
C
int countSegments(char* s) {
int n=0,i;
for(i=0;i<strlen(s);i++){
if(s[i]!=' ')
if(i+1<strlen(s)&&s[i+1]==' '||i+1==strlen(s))
n++;
}
return n;
}
- 代码比较
代码的运行速度比较快
Java程序运行1ms超过100% C程序运行0ms超过100%
- 总结
两个代码的思路是一样的但是发现C程序代码运行速度比Java快,C程序是相对比较低级的在运行速度上有优势。
在思路上,该代码的思路也比较清新,解法比较简单。