sundeepblue
4/13/2014 - 6:02 PM

find longest word in a sentence

find longest word in a sentence

bool is_letter(char c) {
    return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';
}

string find_longest_word(const string& s) {
    if(s.empty()) return "";
    int i = 0, N = s.size();
    
    int max_len = 1, start_idx = 0;
    while(i < N) {
        while(i < N && is_letter(s[i]) == false) i++; // move i to beginning of a word
        int word_end = i;
        while(word_end < N && is_letter(s[word_end]) == true) word_end++;
        if(max_len < word_end - i) {
            max_len = word_end - i;
            start_idx = i;
        }
        i = word_end;
    }
    return s.substr(start_idx, max_len);
}