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 e1e2f23

Browse files
Update solutions
1 parent a1767f2 commit e1e2f23

File tree

8 files changed

+104
-1
lines changed

8 files changed

+104
-1
lines changed

‎lib/hash/two_sum.dart

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
List<int> twoSum(List<int> nums, int target) {
2+
var m = <int, int>{};
3+
4+
for (var i = 0; i < nums.length; i++) {
5+
var diff = target - nums[i];
6+
7+
if (m.containsKey(diff)) {
8+
return [m[diff]!, i];
9+
}
10+
11+
m[nums[i]] = i;
12+
}
13+
14+
return [];
15+
}

‎lib/leetcode.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@ export 'list/reverse_list.dart';
1111
export 'matrix/is_valid_sudoku.dart';
1212
export 'matrix/rotate.dart';
1313
export 'stack/is_valid.dart';
14+
export 'string/is_anagram.dart';
15+
export 'string/is_palindrome.dart';
1416
export 'string/letter_combinations.dart';
1517
export 'tree/invert_tree.dart';
1618
export 'tree/is_same_tree.dart';
1719
export 'tree/is_symmetric.dart';
20+
export 'tree/is_valid_bst.dart';
1821
export 'tree/level_order.dart';
1922
export 'tree/max_depth.dart';
2023
export 'tree/tree_node.dart';
2124
export 'trie/trie.dart';
22-
export 'tree/is_valid_bst.dart';

‎lib/string/is_anagram.dart

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import 'dart:collection';
2+
3+
bool isAnagram(String s, String t) {
4+
if (s.length != t.length) {
5+
return false;
6+
}
7+
8+
var chars = HashMap<String, int>();
9+
for (var i = 0; i < s.length; i++) {
10+
chars.update(s[i], (val) => val + 1, ifAbsent: () => 1);
11+
chars.update(t[i], (val) => val - 1, ifAbsent: () => -1);
12+
}
13+
14+
return chars.values.every((element) => element == 0);
15+
}

‎lib/string/is_palindrome.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
bool isPalindrome(String s) {
2+
final regex = RegExp(r'(\W|_)');
3+
var clean = s.replaceAll(regex, '');
4+
var right = clean.length - 1;
5+
for (var left = 0; left < right; left++, right--) {
6+
if (clean[left].toUpperCase() != clean[right].toUpperCase()) {
7+
return false;
8+
}
9+
}
10+
11+
return true;
12+
}

‎test/hash/two_sum_test.dart

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import 'package:leetcode/hash/two_sum.dart';
2+
import 'package:test/test.dart';
3+
4+
void main() {
5+
test('example 1', () {
6+
var expected = [0, 1];
7+
expect(twoSum([2, 7, 11, 15], 9), containsAll(expected));
8+
});
9+
10+
test('example 2', () {
11+
var expected = [1, 2];
12+
expect(twoSum([3, 2, 4], 6), containsAll(expected));
13+
});
14+
15+
test('example 3', () {
16+
var expected = [0, 1];
17+
expect(twoSum([3, 3], 6), containsAll(expected));
18+
});
19+
}
File renamed without changes.

‎test/string/is_anagram_test.dart

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import 'package:leetcode/leetcode.dart';
2+
import 'package:test/test.dart';
3+
4+
void main() {
5+
test('example 1', () {
6+
var s = 'anagram';
7+
var t = 'nagaram';
8+
var expected = true;
9+
expect(isAnagram(s, t), equals(expected));
10+
});
11+
12+
test('example 2', () {
13+
var s = 'rat';
14+
var t = 'car';
15+
var expected = false;
16+
expect(isAnagram(s, t), equals(expected));
17+
});
18+
}

‎test/string/is_palindrome_test.dart

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import 'package:leetcode/leetcode.dart';
2+
import 'package:test/test.dart';
3+
4+
void main() {
5+
test('example 1', () {
6+
var s = 'A man, a plan, a canal: Panama';
7+
var expected = true;
8+
expect(isPalindrome(s), equals(expected));
9+
});
10+
11+
test('example 2', () {
12+
var s = 'race a car';
13+
var expected = false;
14+
expect(isPalindrome(s), equals(expected));
15+
});
16+
17+
test('example 3 ', () {
18+
var s = ' ';
19+
var expected = true;
20+
expect(isPalindrome(s), equals(expected));
21+
});
22+
}

0 commit comments

Comments
(0)

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