Problem 2490 Circular Sentence
Table of Contents
Problem Statement
Link - Problem 2490
Question
A sentence is a list of words that are separated by a single space with no leading or trailing spaces.
- For example,
"Hello World"
,"HELLO"
,"hello world hello world"
are all sentences.
Words consist of only uppercase and lowercase English letters. Uppercase and lowercase English letters are considered different.
A sentence is circular if:
- The last character of a word is equal to the first character of the next word.
- The last character of the last word is equal to the first character of the first word.
For example, "leetcode exercises sound delightful"
, "eetcode"
, "leetcode eats soul"
are all circular sentences. However, "Leetcode is cool"
, "happy Leetcode"
, "Leetcode"
and "I like Leetcode"
are not circular sentences.
Given a string sentence
, return true
if it is circular. Otherwise, return false
.
Example 1
Input: sentence = "leetcode exercises sound delightful"
Output: true
Explanation: The words in sentence are ["leetcode", "exercises", "sound", "delightful"].
- leetcode's last character is equal to exercises's first character.
- exercises's last character is equal to sound's first character.
- sound's last character is equal to delightful's first character.
- delightful's last character is equal to leetcode's first character.
The sentence is circular.
Example 2
Input: sentence = "eetcode"
Output: true
Explanation: The words in sentence are ["eetcode"].
- eetcode's last character is equal to eetcode's first character.
The sentence is circular.
Example 3
Input: sentence = "Leetcode is cool"
Output: false
Explanation: The words in sentence are ["Leetcode", "is", "cool"].
- Leetcode's last character is not equal to is's first character.
The sentence is not circular.
Constraints
1 <= sentence.length <= 500
- sentence consist of only lowercase and uppercase English letters and spaces.
- The words in sentence are separated by a single space.
- There are no leading or trailing spaces.
Solution
class Solution {
public:
bool isCircularSentence(string s) {
for(int i=0; i< s.size(); i++){
if(s[i]==' '){
if(s[i-1]!=s[i+1])
return false;
}
}
return s[0]==s[s.size()-1];
}
};
Complexity Analysis
| Algorithm | Time Complexity | Space Complexity |
| ---------------- | --------------- | ---------------- |
| String traversal | O(N) | O(1) |
Explanation
1. Intuition
- This question is relatively straightforward.
- A circular sentence is a sentence where the last character of a word is equal to the first character of the next word.
- Also since a sentence cant have leading or trailing spaces, we also need to check if the last character of the last word is equal to the first character of the first word.
- Idea is to traverse the string and whenever encounter a space, check the last character of the previous word and the first character of the next word.
- Whenever we find a mismatch, return false.
- If we reach the end of the string, check if the last character of the last word is equal to the first character of the first word.
- If it is, return true, else return false.
2. Implementation
- For every character `s[i]` in the string do the following:
- If `s[i]` is a space,
check if `s[i-1]` is equal to `s[i+1]`.
- If it is not, return `false`.
- If we reach the end of the string, check if `s[s.size()-1]` is equal to `s[0]`.
- If it is, return `true`, else return `false`.
Easy problem, but a good one to practice string manipulation.