#include #include 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); } }; // 示例 1:leetcode → 'l' 是第一个唯一字符,索引 0 TEST_F(FirstUniqCharTest, Example1) { AssertFirstUniqChar("leetcode", 0); } // 示例 2:loveleetcode → 'v' 是第一个唯一字符,索引 2 TEST_F(FirstUniqCharTest, Example2) { AssertFirstUniqChar("loveleetcode", 2); } // 示例 3:aabb → 没有唯一字符,返回 -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' 是唯一字符 }