寒假冬令营(算法编程)1月12日(字符串)

发布时间:2024年01月15日

题目描述(1)

1662. 检查两个字符串数组是否相等

. - 力扣(LeetCode)

给你两个字符串数组 word1word2 。如果两个数组表示的字符串相同,返回 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. 句子中的最多单词数

. - 力扣(LeetCode)

一个 句子 由一些 单词 以及它们之间的单个空格组成,句子的开头和结尾不会有多余空格。

给你一个字符串数组 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

文章来源:https://blog.csdn.net/m0_73627109/article/details/135477581
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。