2023-06-30每日一题
一、题目编号
2490. 回环句
二、题目链接
三、题目描述
句子 是由单个空格分隔的一组单词,且不含前导或尾随空格。
- 例如,“Hello World”、“HELLO”、“hello world hello world” 都是符合要求的句子。
单词 仅 由大写和小写英文字母组成。且大写和小写字母会视作不同字符。
如果句子满足下述全部条件,则认为它是一个 回环句 :
- 单词的最后一个字符和下一个单词的第一个字符相等。
- 最后一个单词的最后一个字符和第一个单词的第一个字符相等。
例如,“leetcode exercises sound delightful”、“eetcode”、“leetcode eats soul” 都是回环句。然而,“Leetcode is cool”、“happy Leetcode”、“Leetcode” 和 “I like Leetcode” 都 不 是回环句。
给你一个字符串 sentence ,请你判断它是不是一个回环句。如果是,返回 true ;否则,返回 false 。
提示:
- 1 <= sentence.length <= 500
1 <= sentence.length <= 500
sentence 仅由大小写英文字母和空格组成
sentence 中的单词由单个空格进行分隔
不含任何前导或尾随空格
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/circular-sentence
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
四、解题代码
class Solution {
public:
bool isCircularSentence(string sentence) {
int n = sentence.size();
vector<string> s;
string t;
for(int i = 0; i < n; ++i){
if(sentence[i] == ' '){
s.push_back(t);
t.clear();
} else{
t.push_back(sentence[i]);
}
}
s.push_back(t);
int m = s.size();
if(m == 1){
if(s[0][0] == s[0][s[0].size()-1]){
return true;
} else{
return false;
}
}
for(int i = 1; i <= m - 1; ++i){
if(s[i][0] != s[i-1][s[i-1].size() - 1]){
cout<<"gg"<<endl;
return false;
}
}
if(s[0][0] != s[m - 1][s[m - 1].size() - 1]){
return false;
}
return true;
}
};
五、解题思路
(1) 首先将字符串中的每个单词全部存储在一个vector<string>
数组中。
(2) 接着按照题目要求来进行判断即可。如果只有一个单词,只需要判断该单词最后一个字母和第一个字母,否则的话得按照题目比较每个单词和下一个单词的第一个字母和最后一个单词的最后一个字母和第一个单词的第一个字母。
(3) 根据判断返回true和false即可。