跳到主要内容

2490.回环句

链接:2490.回环句
难度:Easy
标签:字符串
简介:给你一个字符串 sentence ,请你判断它是不是一个回环句。如果是,返回 true ;否则,返回 false 。

题解 1 - cpp

  • 编辑时间:2022-12-04
  • 内存消耗:6.7MB
  • 编程语言:cpp
  • 解法介绍:分割后判断。
#include <iostream>
#include <vector>
// bestlyg
# define X first
# define Y second
# define lb(x) ((x) & (-x))
# define mem(a,b) memset(a,b,sizeof(a))
# define debug freopen("r.txt","r",stdin)
# define pi pair<int,int>
#ifdef DEBUG
#define log(frm, args...) { printf(frm, ##args); }
#else
#define log(frm, args...)
#endif
typedef long long ll;
using namespace std;
class Solution {
public:
bool isCircularSentence(string sentence) {
int n = sentence.size();
istringstream iss(sentence);
string temp, prev = "", first = "";
while (getline(iss, temp, ' ')) {
if (prev == "") {
first = temp;
} else {
if (prev.back() != temp.front()) return false;
}
prev = temp;
}
if (temp.back() != first.front()) return false;
return true;
}
};

题解 2 - cpp

  • 编辑时间:2023-06-30
  • 执行用时:56ms
  • 内存消耗:60.9MB
  • 编程语言:cpp
  • 解法介绍:贪心,先填充2的列,再依次填充1的列。
class Solution {
public:
bool isCircularSentence(string sentence) {
int n = sentence.size();
for (int i = 0; i < n; i++) {
while (sentence[i] != ' ' && i < n) i++;
if (i < n - 1 && sentence[i - 1] != sentence[i + 1]) return false;
}
return sentence[n - 1] == sentence[0];
}
};

题解 3 - python

  • 编辑时间:2023-06-30
  • 执行用时:40ms
  • 内存消耗:16.1MB
  • 编程语言:python
  • 解法介绍:字符串分割。
class Solution:
def isCircularSentence(self, sentence: str) -> bool:
l = sentence.split(' ')
for i in range(len(l)):
if l[i][-1] != l[(i + 1) % len(l)][0]:
return False
return True

题解 4 - rust

  • 编辑时间:2023-06-30
  • 执行用时:4ms
  • 内存消耗:2MB
  • 编程语言:rust
  • 解法介绍:同上。
impl Solution {
pub fn is_circular_sentence(sentence: String) -> bool {
let l = sentence
.split(' ')
.into_iter()
.map(|v| v.as_bytes())
.collect::<Vec<&[u8]>>();
for i in 0..l.len() {
if *l[i].last().unwrap() != l[(i + 1) % l.len()][0] {
return false;
}
}
true
}
}