diff --git a/README.md b/README.md index 94503c6..d097b1d 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,9 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/). ### Easy -| Name | Link to LeetCode | Link to solution | -|----------------------|----------------------------------------------------------|-------------------------------------------| -| 1. Two Sum | [Link](https://leetcode.com/problems/two-sum/) | [Link](./lib/easy/two_sum.dart) | -| 9. Palindrome Number | [Link](https://leetcode.com/problems/palindrome-number/) | [Link](./lib/easy/palindrome_number.dart) | -| 13. Roman to Integer | [Link](https://leetcode.com/problems/roman-to-integer/) | [Link](./lib/easy/roman_to_integer.dart) | +| Name | Link to LeetCode | Link to solution | +|---------------------------|--------------------------------------------------------------|-----------------------------------------------| +| 1. Two Sum | [Link](https://leetcode.com/problems/two-sum/) | [Link](./lib/easy/two_sum.dart) | +| 9. Palindrome Number | [Link](https://leetcode.com/problems/palindrome-number/) | [Link](./lib/easy/palindrome_number.dart) | +| 13. Roman to Integer | [Link](https://leetcode.com/problems/roman-to-integer/) | [Link](./lib/easy/roman_to_integer.dart) | +| 14. Longest Common Prefix | [Link](https://leetcode.com/problems/longest-common-prefix/) | [Link](./lib/easy/longest_common_prefix.dart) | diff --git a/lib/easy/longest_common_prefix.dart b/lib/easy/longest_common_prefix.dart new file mode 100644 index 0000000..864c856 --- /dev/null +++ b/lib/easy/longest_common_prefix.dart @@ -0,0 +1,28 @@ +// https://leetcode.com/problems/longest-common-prefix/ +class Solution { + String longestCommonPrefix(List strs) { + if (strs.length == 1) { + return strs.first; + } + var result = ''; + var first = strs.first; + var second = strs[1]; + for (int i = 0; i < first.length && i < second.length; i++) { + if (first[i] == second[i]) { + result += first[i]; + } else { + break; + } + } + if (result.isEmpty) { + return result; + } + for (int i = 2; i < strs.length; i++) { + var str = strs[i]; + while (!str.startsWith(result)) { + result = result.substring(0, result.length - 1); + } + } + return result; + } +} diff --git a/test/easy/longest_common_prefix_test.dart b/test/easy/longest_common_prefix_test.dart new file mode 100644 index 0000000..ace3544 --- /dev/null +++ b/test/easy/longest_common_prefix_test.dart @@ -0,0 +1,29 @@ +import 'package:leetcode_dart/easy/longest_common_prefix.dart'; +import 'package:test/test.dart'; + +void main() { + group( + 'Example tests', + () { + final lcp = Solution(); + test( + 'fl', + () => expect( + 'fl', + lcp.longestCommonPrefix( + ["flower", "flow", "flight"], + ), + ), + ); + test( + '', + () => expect( + '', + lcp.longestCommonPrefix( + ["dog", "racecar", "car"], + ), + ), + ); + }, + ); +}