Sponsored
Sponsored
One efficient way to determine the number of segments in a string is to utilize its built-in split method, which divides the string into parts based on spaces. The segments will represent contiguous sequences of non-space characters. This approach handles all continuous whitespaces correctly by filtering out empty strings in the resulting list or array.
Time Complexity: O(n), where n is the length of the string. Space Complexity: O(1), using in-place manipulation.
1#include <iostream>
2#include <sstream>
3
4int countSegments(const std::string &s) {
5 std::istringstream stream(s);
6 std::string segment;
7 int count = 0;
8 while (stream >> segment) {
9 ++count;
10 }
11 return count;
12}
13
14int main() {
15 std::string s = "Hello, my name is John";
16 std::cout << countSegments(s) << std::endl;
17 return 0;
18}
This C++ solution uses an istringstream
to read the stream of words separated by spaces, incrementing the count for each successful extraction.
This approach iteratively examines the characters of the string to manually count segments. We increment the segment count every time we encounter the start of a segment: a non-space character that was preceded by a space or the start of the string.
Time Complexity: O(n), iterating over the string once. Space Complexity: O(1), as no additional storage beyond a few variables is needed.
1
This Java solution converts the string to a character array and iterates over it, using a flag inSegment
to determine when a new segment starts.