diff --git a/.gitignore b/.gitignore index c795b05..df516c5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -build \ No newline at end of file +build +compile_commands.json +.cache \ No newline at end of file diff --git a/2138/2138.cpp b/2138/2138.cpp new file mode 100644 index 0000000..afb5b34 --- /dev/null +++ b/2138/2138.cpp @@ -0,0 +1,44 @@ +#include +#include +#include + +namespace { + class Solution { + public: + std::vector divideString(std::string s, int k, char fill) { + std::vector res; + for (size_t i = 0; i < s.length(); i += k) { + auto substr = s.substr(i, std::min(k, s.length() - i)); + if (substr.length() < k) { + auto n = substr.length(); + substr.resize(k); + std::fill_n(substr.begin() + n, k - n, fill); + } + res.emplace_back(substr); + } + return res; + } + }; +} + +#include + +TEST(P2138, 1) { + std::string input = "abcdefghi"; + std::vector expected = { "abc","def","ghi" }; + int k = 3; + char fill = 'x'; + Solution s; + auto res = s.divideString(input, k, fill); + EXPECT_EQ(res, expected); +} + +TEST(P2138, 2) { + std::string input = "abcdefghij"; + std::vector expected = { "abc","def","ghi","jxx" }; + int k = 3; + char fill = 'x'; + Solution s; + auto res = s.divideString(input, k, fill); + EXPECT_EQ(res, expected); +} \ No newline at end of file diff --git a/justfile b/justfile index 2f640a5..2013873 100644 --- a/justfile +++ b/justfile @@ -1,5 +1,5 @@ build: - cmake -B ./build -S . + cmake -B ./build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=1 cmake --build ./build --config Debug --target all -j 20 -- test: build