一些算法记录

2019-05-08  本文已影响0人  十月末的故事
1. 将十进制数字转换为26个字母代号。 必须从1开始。 1=A,26=Z。 27=AA,52=AZ。
此问题相当于将10进制数字转换为26进制的数字
+ (NSString *)getColumnName:(NSInteger)columnNumber
{
    NSInteger colNum = columnNumber;
    if (colNum < 1) {
        return nil;
    }
    
    NSMutableString *colName = [NSMutableString string];
    while (colNum > 0)
    {
        char cstr = (char)('A' + (colNum - 1) % 26);
        [colName insertString:[NSString stringWithFormat:@"%c", cstr] atIndex:0];
        
        colNum = (colNum - 1) / 26;  // 减 1 因避免被 26 的倍数整除
    }
    
    return colName;
}
上一篇下一篇

猜你喜欢

热点阅读