题目描述(1)
1662. 检查两个字符串数组是否相等
给你两个字符串数组 word1
和 word2
。如果两个数组表示的字符串相同,返回 true
;否则,返回 false
。
数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。
示例 1:
输入:word1 = ["ab", "c"], word2 = ["a", "bc"] 输出:true 解释: word1 表示的字符串为 "ab" + "c" -> "abc" word2 表示的字符串为 "a" + "bc" -> "abc" 两个字符串相同,返回 true
示例 2:
输入:word1 = ["a", "cb"], word2 = ["ab", "c"] 输出:false
示例 3:
输入:word1 = ["abc", "d", "defg"], word2 = ["abcddefg"] 输出:true
提示:
-
1 <= word1.length, word2.length <= 103
-
1 <= word1[i].length, word2[i].length <= 103
-
1 <= sum(word1[i].length), sum(word2[i].length) <= 103
-
word1[i]
和word2[i]
由小写字母组成
解题结果
Java
class Solution {
// 定义一个方法,用于检查两个字符串数组是否表示相同的字符串
public boolean arrayStringsAreEqual(String[] word1, String[] word2) {
// 创建两个 StringBuilder 对象,用于拼接字符串
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
// 遍历第一个字符串数组 word1,将每个字符串拼接到 sb1 中
for (String str : word1) {
sb1.append(str);
}
// 遍历第二个字符串数组 word2,将每个字符串拼接到 sb2 中
for (String str : word2) {
sb2.append(str);
}
// 比较两个拼接后的字符串是否相等,返回比较结果
return sb1.toString().equals(sb2.toString());
}
}
C语言
// 函数:检查两个字符串数组是否表示相同的字符串
bool arrayStringsAreEqual(char **word1, int word1Size, char **word2, int word2Size) {
// 若两个字符串数组均为空,则认为它们相等
if (word1Size == 0 && word2Size == 0) {
return true;
}
// 定义临时字符数组,用于存储拼接后的字符串
char temp[10000] = "";
char temp2[10000] = "";
// 遍历第一个字符串数组 word1,将每个字符串拼接到 temp 中
for (int i = 0; i < word1Size; i++) {
strcat(temp, word1[i]);
}
// 遍历第二个字符串数组 word2,将每个字符串拼接到 temp2 中
for (int i = 0; i < word2Size; i++) {
strcat(temp2, word2[i]);
}
// 使用 strcmp 函数比较两个拼接后的字符串是否相等
if (strcmp(temp, temp2) == 0) {
return true;
}
// 如果两个字符串不相等,返回 false
return false;
}
C++
class Solution {
public:
bool arrayStringsAreEqual(vector<string>& word1, vector<string>& word2) {
string str1, str2;
for (auto& str : word1) str1 += str;
for (auto& str : word2) str2 += str;
return str1 == str2;
}
};
Python
class Solution:
def arrayStringsAreEqual(self, word1: List[str], word2: List[str]) -> bool:
return ''.join(word1) == ''.join(word2)
题目描述(2)
2114. 句子中的最多单词数
一个 句子 由一些 单词 以及它们之间的单个空格组成,句子的开头和结尾不会有多余空格。
给你一个字符串数组 sentences
,其中 sentences[i]
表示单个 句子 。
请你返回单个句子里 单词的最多数目 。
示例 1:
输入:sentences = ["alice and bob love leetcode", "i think so too", "this is great thanks very much"] 输出:6 解释: - 第一个句子 "alice and bob love leetcode" 总共有 5 个单词。 - 第二个句子 "i think so too" 总共有 4 个单词。 - 第三个句子 "this is great thanks very much" 总共有 6 个单词。 所以,单个句子中有最多单词数的是第三个句子,总共有 6 个单词。
示例 2:
输入:sentences = ["please wait", "continue to fight", "continue to win"] 输出:3 解释:可能有多个句子有相同单词数。 这个例子中,第二个句子和第三个句子(加粗斜体)有相同数目的单词数。
提示:
-
1 <= sentences.length <= 100
-
1 <= sentences[i].length <= 100
-
sentences[i]
只包含小写英文字母和' '
。 -
sentences[i]
的开头和结尾都没有空格。 -
sentences[i]
中所有单词由单个空格隔开。
解题结果
Java
class Solution {
// 方法:计算句子中单词的最大数量
public int mostWordsFound(String[] sentences) {
// 初始化最大单词数量为 0
int maxWords = 0;
// 遍历每个句子
for (String sentence : sentences) {
// 初始化当前句子的单词数量为 1(假设每个句子至少有一个单词)
int words = 1;
// 获取当前句子的长度
int length = sentence.length();
// 遍历句子中的每个字符
for (int i = 0; i < length; i++) {
// 如果当前字符是空格,增加单词数量
if (sentence.charAt(i) == ' ') {
words++;
}
}
// 更新最大单词数量
maxWords = Math.max(maxWords, words);
}
// 返回最大单词数量
return maxWords;
}
}
C语言
// 函数:计算句子中单词的最大数量
int mostWordsFound(char **sentences, int sentencesSize) {
int wordsNum = 1; // 初始化单词数量为1,假设每个句子至少有一个单词
int max = 1; // 初始化最大单词数量为1
// 遍历每个句子
for (int i = 0; i < sentencesSize; i++) {
wordsNum = 1; // 重置单词数量为1
// 遍历句子中的每个字符
for (int j = 0; j < strlen(sentences[i]); j++) {
// 如果当前字符是空格,增加单词数量
if (sentences[i][j] == ' ') {
wordsNum++;
}
}
// 更新最大单词数量
if (wordsNum > max) {
max = wordsNum;
}
}
// 返回最大单词数量
return max;
}
C++
class Solution {
public:
int mostWordsFound(vector<string>& sentences) {
int res = 0;
for (const string& sentence: sentences) {
// 单词数 = 空格数 + 1
int cnt = count(sentence.begin(), sentence.end(), ' ') + 1;
res = max(res, cnt);
}
return res;
}
};
Python
class Solution:
def mostWordsFound(self, sentences: List[str]) -> int:
res = 0
for sentence in sentences:
# 单词数 = 空格数 + 1
cnt = sentence.count(' ') + 1
res = max(res, cnt)
return res