Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /