Files
leetcode/tests/test_387.cpp
2025-07-18 22:23:57 +08:00

51 lines
1.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <gtest/gtest.h>
#include <solution/387.h>
class FirstUniqCharTest : public ::testing::Test
{
protected:
void AssertFirstUniqChar(const std::string &input, int expected)
{
char buf[1001];
strncpy(buf, input.c_str(), sizeof(buf));
buf[1000] = '\0'; // 防止越界
int result = firstUniqChar(buf);
EXPECT_EQ(result, expected);
}
};
// 示例 1leetcode → 'l' 是第一个唯一字符,索引 0
TEST_F(FirstUniqCharTest, Example1)
{
AssertFirstUniqChar("leetcode", 0);
}
// 示例 2loveleetcode → 'v' 是第一个唯一字符,索引 2
TEST_F(FirstUniqCharTest, Example2)
{
AssertFirstUniqChar("loveleetcode", 2);
}
// 示例 3aabb → 没有唯一字符,返回 -1
TEST_F(FirstUniqCharTest, Example3)
{
AssertFirstUniqChar("aabb", -1);
}
// 边界测试:空字符串
TEST_F(FirstUniqCharTest, EmptyString)
{
AssertFirstUniqChar("", -1);
}
// 边界测试:单字符
TEST_F(FirstUniqCharTest, SingleChar)
{
AssertFirstUniqChar("z", 0);
}
// 更多测试:末尾唯一字符
TEST_F(FirstUniqCharTest, UniqueAtEnd)
{
AssertFirstUniqChar("aabbc", 4); // 'c' 是唯一字符
}