@@ -140,13 +140,16 @@ | |||||
</ItemDefinitionGroup> | </ItemDefinitionGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ClInclude Include="include\1_ContainsNearbyDuplicate.h" /> | <ClInclude Include="include\1_ContainsNearbyDuplicate.h" /> | ||||
<ClInclude Include="include\2_ExcelSheetColumnTitle.h" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ClCompile Include="src\1_ContainsNearbyDuplicate.cpp" /> | <ClCompile Include="src\1_ContainsNearbyDuplicate.cpp" /> | ||||
<ClCompile Include="src\2_ExcelSheetColumnTitle.cpp" /> | |||||
<ClCompile Include="src\main.cpp" /> | <ClCompile Include="src\main.cpp" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<None Include="config\1_ContainsNearbyDuplicate.ini" /> | <None Include="config\1_ContainsNearbyDuplicate.ini" /> | ||||
<None Include="config\2_ExcelSheetColumnTiTle.ini" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
<ImportGroup Label="ExtensionTargets"> | <ImportGroup Label="ExtensionTargets"> | ||||
@@ -18,6 +18,9 @@ | |||||
<ClInclude Include="include\1_ContainsNearbyDuplicate.h"> | <ClInclude Include="include\1_ContainsNearbyDuplicate.h"> | ||||
<Filter>头文件</Filter> | <Filter>头文件</Filter> | ||||
</ClInclude> | </ClInclude> | ||||
<ClInclude Include="include\2_ExcelSheetColumnTitle.h"> | |||||
<Filter>头文件</Filter> | |||||
</ClInclude> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ClCompile Include="src\1_ContainsNearbyDuplicate.cpp"> | <ClCompile Include="src\1_ContainsNearbyDuplicate.cpp"> | ||||
@@ -26,10 +29,16 @@ | |||||
<ClCompile Include="src\main.cpp"> | <ClCompile Include="src\main.cpp"> | ||||
<Filter>源文件</Filter> | <Filter>源文件</Filter> | ||||
</ClCompile> | </ClCompile> | ||||
<ClCompile Include="src\2_ExcelSheetColumnTitle.cpp"> | |||||
<Filter>源文件</Filter> | |||||
</ClCompile> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<None Include="config\1_ContainsNearbyDuplicate.ini"> | <None Include="config\1_ContainsNearbyDuplicate.ini"> | ||||
<Filter>资源文件</Filter> | <Filter>资源文件</Filter> | ||||
</None> | </None> | ||||
<None Include="config\2_ExcelSheetColumnTiTle.ini"> | |||||
<Filter>资源文件</Filter> | |||||
</None> | |||||
</ItemGroup> | </ItemGroup> | ||||
</Project> | </Project> |
@@ -0,0 +1,36 @@ | |||||
[Test1] | |||||
Na=1 | |||||
nExpect=A | |||||
[Test2] | |||||
Na=2 | |||||
nExpect=B | |||||
[Test3] | |||||
Na=26 | |||||
nExpect=Z | |||||
[Test4] | |||||
Na=1 | |||||
nExpect=A | |||||
[Test5] | |||||
Na=27 | |||||
nExpect=AA | |||||
[Test6] | |||||
Na=52 | |||||
nExpect=AZ | |||||
[Test7] | |||||
Na=53 | |||||
nExpect=BA | |||||
[Test8] | |||||
Na=100 | |||||
nExpect=CV | |||||
[Test9] | |||||
Na= | |||||
nExpect= | |||||
[Test10] | |||||
Na=5000 | |||||
nExpect=GJH | |||||
[Test11] | |||||
Na=10000 | |||||
nExpect=NTP | |||||
[Test12] | |||||
Na=2147483647 | |||||
nExpect=FXSHRXW |
@@ -0,0 +1,6 @@ | |||||
#pragma once | |||||
#include <stdio.h> | |||||
#include <string.h> | |||||
#include <stdlib.h> | |||||
char* ExcelSheetColumnTitle(int n); |
@@ -0,0 +1,18 @@ | |||||
#include "../include/2_ExcelSheetColumnTitle.h" | |||||
//题目:给定一个整数,返回它在 Excel 表中相对应的列名称,如果在Excel表中找不到该列,则返回""。 | |||||
//思路:1.对n取余,把得到的余数加'A'从后往前放到字符串中,n = n/26,循环操作直到n为0 | |||||
// 2.字符串长度不足7则指针后移,去掉前面的空位 | |||||
char* ExcelSheetColumnTitle(int n) | |||||
{ //int类型大于0的数为0~2147483647,可以用7个A~Z的字母表示,int不会超过26的7次方 | |||||
char* ret = (char*)malloc(sizeof(char) * 8);//所以这里申请8字节的空间,一个字节存放\0标志 | |||||
int i = 7; //用来访问字符串中的每个字符 | |||||
ret[7] = '\0'; //给结尾赋上\0 | |||||
while (n) { //当n等于0时结束 | |||||
n -= 1; //给n减一,因为n后面是从字符'A'开始的相加的 | |||||
ret[i-1] = n % 26 + 'A'; //从后往前赋值,从最后一个赋值到第一个 | |||||
n /= 26; | |||||
i--; //给下一个字符赋值 | |||||
} | |||||
return ret + i; //去掉前面的前导字符,如果前面没有字符则指针后移 | |||||
free(ret); | |||||
} |
@@ -15,6 +15,7 @@ | |||||
#include"../code/include/1_ContainsNearbyDuplicate.h" | #include"../code/include/1_ContainsNearbyDuplicate.h" | ||||
#include"../code/include/2_ExcelSheetColumnTitle.h" | |||||
int CalcCount(int n, char(*str)[10], const char* FileName); | int CalcCount(int n, char(*str)[10], const char* FileName); | ||||
@@ -3,6 +3,9 @@ | |||||
using namespace Microsoft::VisualStudio::CppUnitTestFramework; | using namespace Microsoft::VisualStudio::CppUnitTestFramework; | ||||
#define FileName_1 "../code/config/1_ContainsNearbyDuplicate.ini" | #define FileName_1 "../code/config/1_ContainsNearbyDuplicate.ini" | ||||
#define FileName_2 "../code/config/2_ExcelSheetColumnTiTle.ini" | |||||
namespace test1 | namespace test1 | ||||
{ | { | ||||
TEST_CLASS(UnitTest_1) | TEST_CLASS(UnitTest_1) | ||||
@@ -27,12 +30,19 @@ namespace test1 | |||||
} | } | ||||
namespace test2 | namespace test2 | ||||
{ | { | ||||
TEST_CLASS(test) | |||||
TEST_CLASS(UnitTest_1) | |||||
{ | { | ||||
public: | |||||
TEST_METHOD(TestMethod1) | |||||
TEST_METHOD(TestMethode1) | |||||
{ | { | ||||
char Section_Name[100][10] = { 0 }; | |||||
int Section_Count = CalcCount(100, Section_Name, FileName_2); | |||||
CString Na, nExpect; | |||||
for (int i = 0; i < Section_Count; i++) { | |||||
GetPrivateProfileString(Section_Name[i], "Na", " ", Na.GetBuffer(20), 20, FileName_2); | |||||
GetPrivateProfileString(Section_Name[i], "nExpect", " ", nExpect.GetBuffer(100), 100, FileName_2); | |||||
char* nReal = ExcelSheetColumnTitle(_ttoi(Na)); | |||||
Assert::AreEqual(nReal, nExpect); | |||||
} | |||||
} | } | ||||
}; | }; | ||||
} | } | ||||