Skip to content

Commit ef41d6b

Browse files
committed
feat: updates feb 4 2025
1 parent 2d21030 commit ef41d6b

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

1790-string-swap-string.dart

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
class Solution {
2+
bool areAlmostEqual(String s1, String s2) {
3+
if (s1 == s2) return true;
4+
5+
if (s1.length != s2.length) return false;
6+
7+
List<int> diffs = [];
8+
9+
for (int i = 0; i < s1.length && diffs.length <= 2; i++) {
10+
if (s1[i] != s2[i]) {
11+
diffs.add(i);
12+
}
13+
}
14+
15+
return diffs.length == 2 &&
16+
s1[diffs[0]] == s2[diffs[1]] &&
17+
s1[diffs[1]] == s2[diffs[0]];
18+
}
19+
}
20+
21+
void main() {
22+
final solution = Solution();
23+
24+
// Test cases
25+
final testCases = [
26+
{'s1': 'bank', 's2': 'kanb', 'expected': true},
27+
{'s1': 'attack', 's2': 'defend', 'expected': false},
28+
{'s1': 'kelb', 's2': 'kelb', 'expected': true},
29+
];
30+
31+
for (int i = 0; i < testCases.length; i++) {
32+
final test = testCases[i];
33+
final result =
34+
solution.areAlmostEqual(test['s1'] as String, test['s2'] as String);
35+
print('Test case ${i + 1}:');
36+
print('Input: s1 = "${test['s1']}", s2 = "${test['s2']}"');
37+
print('Expected: ${test['expected']}, Got: $result');
38+
print('Status: ${result == test['expected'] ? 'PASSED' : 'FAILED'}\n');
39+
}
40+
}

0 commit comments

Comments
 (0)