1. 程式人生 > 其它 >第322場周賽第一題

第322場周賽第一題

句子 是由單個空格分隔的一組單詞,且不含前導或尾隨空格。

例如,"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 = "leetcode exercises sound delightful"
輸出:true
解釋:句子中的單詞是 ["leetcode", "exercises", "sound", "delightful"] 。
- leetcode 的最後一個字元和 exercises 的第一個字元相等。
- exercises 的最後一個字元和 sound 的第一個字元相等。
- sound 的最後一個字元和 delightful 的第一個字元相等。
- delightful 的最後一個字元和 leetcode 的第一個字元相等。
這個句子是迴環句。
示例 2:

輸入:sentence = "eetcode"
輸出:true
解釋:句子中的單詞是 ["eetcode"] 。
- eetcode 的最後一個字元和 eetcode 的第一個字元相等。
這個句子是迴環句。
示例 3:

輸入:sentence = "Leetcode is cool"
輸出:false
解釋:句子中的單詞是 ["Leetcode", "is", "cool"] 。
- Leetcode 的最後一個字元和 is 的第一個字元 不 相等。
這個句子 不 是迴環句。

思路:簡單簽到題,一趟O(n),將句子按空格分離出單詞,再來一趟O(n)迴圈檢測

class Solution {
    vector
<string> s; string temp = ""; int flag = 0; public: bool isCircularSentence(string sentence) { for(int i = 0;i<sentence.length();i++)//按空格分離單詞 { if(sentence[i]!=' ') temp+=sentence[i]; else { if(temp.length()!=0)遇到空格意味著一個單詞結束 { s.push_back(temp); temp = ""; } } } s.push_back(temp);//最後一個單詞在上述迴圈邏輯中無法填入 char a = s[0][0];//首字母特判 for(int i = 1;i<s.size();i++) { if(s[i][0]!=s[i-1][s[i-1].length()-1]) { flag = 1; } } if(!flag&&a==s[s.size()-1][s[s.size()-1].length()-1]) return true; return false; } };