diff --git a/solution/1900-1999/1930.Unique Length-3 Palindromic Subsequences/README.md b/solution/1900-1999/1930.Unique Length-3 Palindromic Subsequences/README.md index 05f86a482da50..cf558b2628b74 100644 --- a/solution/1900-1999/1930.Unique Length-3 Palindromic Subsequences/README.md +++ b/solution/1900-1999/1930.Unique Length-3 Palindromic Subsequences/README.md @@ -191,6 +191,33 @@ function countPalindromicSubsequence(s: string): number { } ``` +#### Rust + +```rust +impl Solution { + pub fn count_palindromic_subsequence(s: String) -> i32 { + let s_bytes = s.as_bytes(); + let mut ans = 0; + for c in b'a'..=b'z' { + if let (Some(l), Some(r)) = ( + s_bytes.iter().position(|&ch| ch == c), + s_bytes.iter().rposition(|&ch| ch == c), + ) { + let mut mask = 0u32; + for i in (l + 1)..r { + let j = (s_bytes[i] - b'a') as u32; + if (mask >> j & 1) == 0 { + mask |= 1 << j; + ans += 1; + } + } + } + } + ans + } +} +``` + #### JavaScript ```js diff --git a/solution/1900-1999/1930.Unique Length-3 Palindromic Subsequences/README_EN.md b/solution/1900-1999/1930.Unique Length-3 Palindromic Subsequences/README_EN.md index d859523c8fe19..60024e7a05b4b 100644 --- a/solution/1900-1999/1930.Unique Length-3 Palindromic Subsequences/README_EN.md +++ b/solution/1900-1999/1930.Unique Length-3 Palindromic Subsequences/README_EN.md @@ -189,6 +189,33 @@ function countPalindromicSubsequence(s: string): number { } ``` +#### Rust + +```rust +impl Solution { + pub fn count_palindromic_subsequence(s: String) -> i32 { + let s_bytes = s.as_bytes(); + let mut ans = 0; + for c in b'a'..=b'z' { + if let (Some(l), Some(r)) = ( + s_bytes.iter().position(|&ch| ch == c), + s_bytes.iter().rposition(|&ch| ch == c), + ) { + let mut mask = 0u32; + for i in (l + 1)..r { + let j = (s_bytes[i] - b'a') as u32; + if (mask >> j & 1) == 0 { + mask |= 1 << j; + ans += 1; + } + } + } + } + ans + } +} +``` + #### JavaScript ```js diff --git a/solution/1900-1999/1930.Unique Length-3 Palindromic Subsequences/Solution.rs b/solution/1900-1999/1930.Unique Length-3 Palindromic Subsequences/Solution.rs new file mode 100644 index 0000000000000..452b2735df8ca --- /dev/null +++ b/solution/1900-1999/1930.Unique Length-3 Palindromic Subsequences/Solution.rs @@ -0,0 +1,22 @@ +impl Solution { + pub fn count_palindromic_subsequence(s: String) -> i32 { + let s_bytes = s.as_bytes(); + let mut ans = 0; + for c in b'a'..=b'z' { + if let (Some(l), Some(r)) = ( + s_bytes.iter().position(|&ch| ch == c), + s_bytes.iter().rposition(|&ch| ch == c), + ) { + let mut mask = 0u32; + for i in (l + 1)..r { + let j = (s_bytes[i] - b'a') as u32; + if (mask >> j & 1) == 0 { + mask |= 1 << j; + ans += 1; + } + } + } + } + ans + } +}