Skip to content

Commit 28cf1de

Browse files
committed
feat: add solutions to lc problems: No.0014,0151
- No.0014.Longest Common Prefix - No.0151.Reverse Words in a String
1 parent b75ff7b commit 28cf1de

File tree

8 files changed

+263
-9
lines changed

8 files changed

+263
-9
lines changed

solution/0000-0099/0014.Longest Common Prefix/README.md

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,112 @@ LOOP:
125125
}
126126
```
127127

128+
### **C#**
129+
130+
```cs
131+
using System.Text;
132+
using System.Linq;
133+
134+
public class Solution {
135+
public string LongestCommonPrefix(string[] strs) {
136+
if (strs.Length == 0) return string.Empty;
137+
var sb = new StringBuilder();
138+
for (var i = 0; i < strs[0].Length; ++i)
139+
{
140+
var ch = strs[0][i];
141+
if (strs.All(str => str.Length > i && str[i] == ch))
142+
{
143+
sb.Append(ch);
144+
}
145+
else
146+
{
147+
break;
148+
}
149+
}
150+
return sb.ToString();
151+
}
152+
}
153+
```
154+
155+
### **Ruby**
156+
157+
```rb
158+
# @param {String[]} strs
159+
# @return {String}
160+
def longest_common_prefix(strs)
161+
return '' if strs.nil? || strs.length.zero?
162+
163+
return strs[0] if strs.length == 1
164+
165+
idx = 0
166+
while idx < strs[0].length
167+
cur_char = strs[0][idx]
168+
169+
str_idx = 1
170+
while str_idx < strs.length
171+
return idx > 0 ? strs[0][0..idx-1] : '' if strs[str_idx].length <= idx
172+
173+
return '' if strs[str_idx][idx] != cur_char && idx.zero?
174+
return strs[0][0..idx - 1] if strs[str_idx][idx] != cur_char
175+
str_idx += 1
176+
end
177+
178+
idx += 1
179+
end
180+
181+
idx > 0 ? strs[0][0..idx] : ''
182+
end
183+
```
184+
185+
### **JavaScript**
186+
187+
```js
188+
const longestCommonPrefix = function (strs) {
189+
if (strs.length === 0) return '';
190+
for (let j = 0; j < strs[0].length; j++) {
191+
for (let i = 0; i < strs.length; i++) {
192+
if (strs[0][j] !== strs[i][j]) {
193+
return strs[0].substring(0, j);
194+
}
195+
}
196+
}
197+
return strs[0];
198+
};
199+
```
200+
201+
### **TypeScript**
202+
203+
```ts
204+
function longestCommonPrefix(strs: string[]): string {
205+
const len = strs.reduce((r, s) => Math.min(r, s.length), Infinity);
206+
for (let i = len; i > 0; i--) {
207+
const target = strs[0].slice(0, i);
208+
if (strs.every(s => s.slice(0, i) === target)) {
209+
return target;
210+
}
211+
}
212+
return '';
213+
}
214+
```
215+
216+
### **Rust**
217+
218+
```rust
219+
impl Solution {
220+
pub fn longest_common_prefix(strs: Vec<String>) -> String {
221+
let mut len = strs.iter().map(|s| s.len()).min().unwrap();
222+
for i in (1..=len).rev() {
223+
let mut is_equal = true;
224+
let target = strs[0][0..i].to_string();
225+
if strs.iter().all(|s| target == s[0..i]) {
226+
return target;
227+
}
228+
}
229+
String::new()
230+
}
231+
}
232+
```
233+
128234
### **...**
129235

130236
```

solution/0000-0099/0014.Longest Common Prefix/README_EN.md

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,112 @@ LOOP:
116116
}
117117
```
118118

119+
### **C#**
120+
121+
```cs
122+
using System.Text;
123+
using System.Linq;
124+
125+
public class Solution {
126+
public string LongestCommonPrefix(string[] strs) {
127+
if (strs.Length == 0) return string.Empty;
128+
var sb = new StringBuilder();
129+
for (var i = 0; i < strs[0].Length; ++i)
130+
{
131+
var ch = strs[0][i];
132+
if (strs.All(str => str.Length > i && str[i] == ch))
133+
{
134+
sb.Append(ch);
135+
}
136+
else
137+
{
138+
break;
139+
}
140+
}
141+
return sb.ToString();
142+
}
143+
}
144+
```
145+
146+
### **Ruby**
147+
148+
```rb
149+
# @param {String[]} strs
150+
# @return {String}
151+
def longest_common_prefix(strs)
152+
return '' if strs.nil? || strs.length.zero?
153+
154+
return strs[0] if strs.length == 1
155+
156+
idx = 0
157+
while idx < strs[0].length
158+
cur_char = strs[0][idx]
159+
160+
str_idx = 1
161+
while str_idx < strs.length
162+
return idx > 0 ? strs[0][0..idx-1] : '' if strs[str_idx].length <= idx
163+
164+
return '' if strs[str_idx][idx] != cur_char && idx.zero?
165+
return strs[0][0..idx - 1] if strs[str_idx][idx] != cur_char
166+
str_idx += 1
167+
end
168+
169+
idx += 1
170+
end
171+
172+
idx > 0 ? strs[0][0..idx] : ''
173+
end
174+
```
175+
176+
### **JavaScript**
177+
178+
```js
179+
const longestCommonPrefix = function (strs) {
180+
if (strs.length === 0) return '';
181+
for (let j = 0; j < strs[0].length; j++) {
182+
for (let i = 0; i < strs.length; i++) {
183+
if (strs[0][j] !== strs[i][j]) {
184+
return strs[0].substring(0, j);
185+
}
186+
}
187+
}
188+
return strs[0];
189+
};
190+
```
191+
192+
### **TypeScript**
193+
194+
```ts
195+
function longestCommonPrefix(strs: string[]): string {
196+
const len = strs.reduce((r, s) => Math.min(r, s.length), Infinity);
197+
for (let i = len; i > 0; i--) {
198+
const target = strs[0].slice(0, i);
199+
if (strs.every(s => s.slice(0, i) === target)) {
200+
return target;
201+
}
202+
}
203+
return '';
204+
}
205+
```
206+
207+
### **Rust**
208+
209+
```rust
210+
impl Solution {
211+
pub fn longest_common_prefix(strs: Vec<String>) -> String {
212+
let mut len = strs.iter().map(|s| s.len()).min().unwrap();
213+
for i in (1..=len).rev() {
214+
let mut is_equal = true;
215+
let target = strs[0][0..i].to_string();
216+
if strs.iter().all(|s| target == s[0..i]) {
217+
return target;
218+
}
219+
}
220+
String::new()
221+
}
222+
}
223+
```
224+
119225
### **...**
120226

121227
```
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
impl Solution {
2+
pub fn longest_common_prefix(strs: Vec<String>) -> String {
3+
let mut len = strs.iter().map(|s| s.len()).min().unwrap();
4+
for i in (1..=len).rev() {
5+
let mut is_equal = true;
6+
let target = strs[0][0..i].to_string();
7+
if strs.iter().all(|s| target == s[0..i]) {
8+
return target;
9+
}
10+
}
11+
String::new()
12+
}
13+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
function longestCommonPrefix(strs: string[]): string {
2+
const len = strs.reduce((r, s) => Math.min(r, s.length), Infinity);
3+
for (let i = len; i > 0; i--) {
4+
const target = strs[0].slice(0, i);
5+
if (strs.every(s => s.slice(0, i) === target)) {
6+
return target;
7+
}
8+
}
9+
return '';
10+
}

solution/0100-0199/0151.Reverse Words in a String/README.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,17 @@ public class Solution {
101101

102102
```ts
103103
function reverseWords(s: string): string {
104-
let words: string[] = s.trim().split(/\s+/g);
105-
words.reverse();
106-
return words.join(' ');
104+
return s.trim().split(/\s+/).reverse().join(' ');
105+
}
106+
```
107+
108+
### **Rust**
109+
110+
```rust
111+
impl Solution {
112+
pub fn reverse_words(s: String) -> String {
113+
s.split_whitespace().rev().collect::<Vec<&str>>().join(" ")
114+
}
107115
}
108116
```
109117

solution/0100-0199/0151.Reverse Words in a String/README_EN.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,17 @@ public class Solution {
8787

8888
```ts
8989
function reverseWords(s: string): string {
90-
let words: string[] = s.trim().split(/\s+/g);
91-
words.reverse();
92-
return words.join(' ');
90+
return s.trim().split(/\s+/).reverse().join(' ');
91+
}
92+
```
93+
94+
### **Rust**
95+
96+
```rust
97+
impl Solution {
98+
pub fn reverse_words(s: String) -> String {
99+
s.split_whitespace().rev().collect::<Vec<&str>>().join(" ")
100+
}
93101
}
94102
```
95103

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
impl Solution {
2+
pub fn reverse_words(s: String) -> String {
3+
s.split_whitespace().rev().collect::<Vec<&str>>().join(" ")
4+
}
5+
}
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
function reverseWords(s: string): string {
2-
let words: string[] = s.trim().split(/\s+/g);
3-
words.reverse();
4-
return words.join(' ');
2+
return s.trim().split(/\s+/).reverse().join(' ');
53
}

0 commit comments

Comments
 (0)