comments | difficulty | edit_url | rating | source | tags | |
---|---|---|---|---|---|---|
true |
Easy |
1262 |
Weekly Contest 322 Q1 |
|
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.
We split the string into words by spaces, then check whether the last character of each word is equal to the first character of the next word. If they are not equal, return false
. Otherwise, return true
after traversing all the words.
The time complexity is
class Solution:
def isCircularSentence(self, sentence: str) -> bool:
ss = sentence.split()
n = len(ss)
return all(s[-1] == ss[(i + 1) % n][0] for i, s in enumerate(ss))
class Solution {
public boolean isCircularSentence(String sentence) {
var ss = sentence.split(" ");
int n = ss.length;
for (int i = 0; i < n; ++i) {
if (ss[i].charAt(ss[i].length() - 1) != ss[(i + 1) % n].charAt(0)) {
return false;
}
}
return true;
}
}
class Solution {
public:
bool isCircularSentence(string sentence) {
auto ss = split(sentence, ' ');
int n = ss.size();
for (int i = 0; i < n; ++i) {
if (ss[i].back() != ss[(i + 1) % n][0]) {
return false;
}
}
return true;
}
vector<string> split(string& s, char delim) {
stringstream ss(s);
string item;
vector<string> res;
while (getline(ss, item, delim)) {
res.emplace_back(item);
}
return res;
}
};
func isCircularSentence(sentence string) bool {
ss := strings.Split(sentence, " ")
n := len(ss)
for i, s := range ss {
if s[len(s)-1] != ss[(i+1)%n][0] {
return false
}
}
return true
}
function isCircularSentence(sentence: string): boolean {
const ss = sentence.split(' ');
const n = ss.length;
for (let i = 0; i < n; ++i) {
if (ss[i][ss[i].length - 1] !== ss[(i + 1) % n][0]) {
return false;
}
}
return true;
}
impl Solution {
pub fn is_circular_sentence(sentence: String) -> bool {
let ss: Vec<String> = sentence.split(' ').map(String::from).collect();
let n = ss.len();
for i in 0..n {
if ss[i].as_bytes()[ss[i].len() - 1] != ss[(i + 1) % n].as_bytes()[0] {
return false;
}
}
return true;
}
}
/**
* @param {string} sentence
* @return {boolean}
*/
var isCircularSentence = function (sentence) {
const ss = sentence.split(' ');
const n = ss.length;
for (let i = 0; i < n; ++i) {
if (ss[i][ss[i].length - 1] !== ss[(i + 1) % n][0]) {
return false;
}
}
return true;
};
We can first check whether the first and last characters of the string are equal. If they are not equal, return false
. Otherwise, traverse the string. If the current character is a space, check whether the previous character and the next character are equal. If they are not equal, return false
. Otherwise, return true
after traversing all the characters.
The time complexity is
class Solution:
def isCircularSentence(self, s: str) -> bool:
return s[0] == s[-1] and all(
c != " " or s[i - 1] == s[i + 1] for i, c in enumerate(s)
)
class Solution {
public boolean isCircularSentence(String s) {
int n = s.length();
if (s.charAt(0) != s.charAt(n - 1)) {
return false;
}
for (int i = 1; i < n; ++i) {
if (s.charAt(i) == ' ' && s.charAt(i - 1) != s.charAt(i + 1)) {
return false;
}
}
return true;
}
}
class Solution {
public:
bool isCircularSentence(string s) {
int n = s.size();
if (s[0] != s.back()) {
return false;
}
for (int i = 1; i < n; ++i) {
if (s[i] == ' ' && s[i - 1] != s[i + 1]) {
return false;
}
}
return true;
}
};
func isCircularSentence(s string) bool {
n := len(s)
if s[0] != s[n-1] {
return false
}
for i := 1; i < n; i++ {
if s[i] == ' ' && s[i-1] != s[i+1] {
return false
}
}
return true
}
function isCircularSentence(s: string): boolean {
const n = s.length;
if (s[0] !== s[n - 1]) {
return false;
}
for (let i = 1; i < n; ++i) {
if (s[i] === ' ' && s[i - 1] !== s[i + 1]) {
return false;
}
}
return true;
}
impl Solution {
pub fn is_circular_sentence(sentence: String) -> bool {
let n = sentence.len();
let chars: Vec<char> = sentence.chars().collect();
if chars[0] != chars[n - 1] {
return false;
}
for i in 1..n - 1 {
if chars[i] == ' ' && chars[i - 1] != chars[i + 1] {
return false;
}
}
true
}
}
/**
* @param {string} s
* @return {boolean}
*/
var isCircularSentence = function (s) {
const n = s.length;
if (s[0] !== s[n - 1]) {
return false;
}
for (let i = 1; i < n; ++i) {
if (s[i] === ' ' && s[i - 1] !== s[i + 1]) {
return false;
}
}
return true;
};