diff --git a/solution/2000-2099/2063.Vowels of All Substrings/README.md b/solution/2000-2099/2063.Vowels of All Substrings/README.md index 2653b85def8e6..36b9dd813a5eb 100644 --- a/solution/2000-2099/2063.Vowels of All Substrings/README.md +++ b/solution/2000-2099/2063.Vowels of All Substrings/README.md @@ -85,9 +85,9 @@ tags: ### 方法一:枚举贡献 -我们可以枚举字符串的每个字符 $word[i]$,如果 $word[i]$ 是元音字母,那么 $word[i]$ 一共在 $(i + 1) \times (n - i)$ 个子字符串中出现,将这些子字符串的个数累加即可。 +我们可以枚举字符串的每个字符 $\textit{word}[i]$,如果 $\textit{word}[i]$ 是元音字母,那么 $\textit{word}[i]$ 一共在 $(i + 1) \times (n - i)$ 个子字符串中出现,将这些子字符串的个数累加即可。 -时间复杂度 $O(n)$,空间复杂度 $O(1)$。其中 $n$ 为字符串 $word$ 的长度。 +时间复杂度 $O(n)$,其中 $n$ 为字符串 $\textit{word}$ 的长度。空间复杂度 $O(1)$。 @@ -163,6 +163,40 @@ function countVowels(word: string): number { } ``` +#### Rust + +```rust +impl Solution { + pub fn count_vowels(word: String) -> i64 { + let n = word.len() as i64; + word.chars() + .enumerate() + .filter(|(_, c)| "aeiou".contains(*c)) + .map(|(i, _)| (i as i64 + 1) * (n - i as i64)) + .sum() + } +} +``` + +#### JavaScript + +```js +/** + * @param {string} word + * @return {number} + */ +var countVowels = function (word) { + const n = word.length; + let ans = 0; + for (let i = 0; i < n; ++i) { + if (['a', 'e', 'i', 'o', 'u'].includes(word[i])) { + ans += (i + 1) * (n - i); + } + } + return ans; +}; +``` + diff --git a/solution/2000-2099/2063.Vowels of All Substrings/README_EN.md b/solution/2000-2099/2063.Vowels of All Substrings/README_EN.md index f7c07bc373390..1a5b421d1cba6 100644 --- a/solution/2000-2099/2063.Vowels of All Substrings/README_EN.md +++ b/solution/2000-2099/2063.Vowels of All Substrings/README_EN.md @@ -33,12 +33,12 @@ tags:
Input: word = "aba" Output: 6 -Explanation: +Explanation: All possible substrings are: "a", "ab", "aba", "b", "ba", and "a". - "b" has 0 vowels in it - "a", "ab", "ba", and "a" have 1 vowel each - "aba" has 2 vowels in it -Hence, the total sum of vowels = 0 + 1 + 1 + 1 + 1 + 2 = 6. +Hence, the total sum of vowels = 0 + 1 + 1 + 1 + 1 + 2 = 6.
Example 2:
@@ -46,7 +46,7 @@ Hence, the total sum of vowels = 0 + 1 + 1 + 1 + 1 + 2 = 6.
Input: word = "abc"
Output: 3
-Explanation:
+Explanation:
All possible substrings are: "a", "ab", "abc", "b", "bc", and "c".
- "a", "ab", and "abc" have 1 vowel each
- "b", "bc", and "c" have 0 vowels each
@@ -75,7 +75,11 @@ Hence, the total sum of vowels = 1 + 1 + 1 + 0 + 0 + 0 = 3.
-### Solution 1
+### Solution 1: Enumerate Contribution
+
+We can enumerate each character $\textit{word}[i]$ in the string. If $\textit{word}[i]$ is a vowel, then $\textit{word}[i]$ appears in $(i + 1) \times (n - i)$ substrings. We sum up the counts of these substrings.
+
+The time complexity is $O(n)$, where $n$ is the length of the string $\textit{word}$. The space complexity is $O(1)$.
@@ -151,6 +155,40 @@ function countVowels(word: string): number {
}
```
+#### Rust
+
+```rust
+impl Solution {
+ pub fn count_vowels(word: String) -> i64 {
+ let n = word.len() as i64;
+ word.chars()
+ .enumerate()
+ .filter(|(_, c)| "aeiou".contains(*c))
+ .map(|(i, _)| (i as i64 + 1) * (n - i as i64))
+ .sum()
+ }
+}
+```
+
+#### JavaScript
+
+```js
+/**
+ * @param {string} word
+ * @return {number}
+ */
+var countVowels = function (word) {
+ const n = word.length;
+ let ans = 0;
+ for (let i = 0; i < n; ++i) {
+ if (['a', 'e', 'i', 'o', 'u'].includes(word[i])) {
+ ans += (i + 1) * (n - i);
+ }
+ }
+ return ans;
+};
+```
+
diff --git a/solution/2000-2099/2063.Vowels of All Substrings/Solution.js b/solution/2000-2099/2063.Vowels of All Substrings/Solution.js
new file mode 100644
index 0000000000000..1cb57ec60dda5
--- /dev/null
+++ b/solution/2000-2099/2063.Vowels of All Substrings/Solution.js
@@ -0,0 +1,14 @@
+/**
+ * @param {string} word
+ * @return {number}
+ */
+var countVowels = function (word) {
+ const n = word.length;
+ let ans = 0;
+ for (let i = 0; i < n; ++i) {
+ if (['a', 'e', 'i', 'o', 'u'].includes(word[i])) {
+ ans += (i + 1) * (n - i);
+ }
+ }
+ return ans;
+};
diff --git a/solution/2000-2099/2063.Vowels of All Substrings/Solution.rs b/solution/2000-2099/2063.Vowels of All Substrings/Solution.rs
new file mode 100644
index 0000000000000..55243247dd45f
--- /dev/null
+++ b/solution/2000-2099/2063.Vowels of All Substrings/Solution.rs
@@ -0,0 +1,10 @@
+impl Solution {
+ pub fn count_vowels(word: String) -> i64 {
+ let n = word.len() as i64;
+ word.chars()
+ .enumerate()
+ .filter(|(_, c)| "aeiou".contains(*c))
+ .map(|(i, _)| (i as i64 + 1) * (n - i as i64))
+ .sum()
+ }
+}