LeetCode-Excel Sheet Column Title

本文详细解析如何将整数转换为Excel列名,采用递归算法解决26进制问题,并强调了算法逻辑与实现细节。通过实例代码,展示了如何在不使用常规方法的情况下,巧妙地处理数字到字母的映射问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

Given a positive integer, return its corresponding column title as appear in an Excel sheet.

For example:

    1 -> A
    2 -> B
    3 -> C
    ...
    26 -> Z
    27 -> AA
    28 -> AB 
这种题跟整型转化为一个字符串,整型转化为一个二进制都是一个道理,使用递归比较适合本题,但是还是稍微有区别的,先来上代码

StringBuilder sb = new StringBuilder("");
	public String convertToTitle(int n) {
		n--;
		if (n < 26) {
			sb.append(intToChar(n));
			return sb.toString();
		}
		convertToTitle(n/26);
		sb.append(intToChar(n%26));
		return sb.toString();
	}
	
	public char intToChar(int n) {
		return (char)(n+'A');
	}
看到什么区别了么?在这个函数的第一行有一个n--,因为这个看似是一个26进制问题,但是问题就来了,他的初始数字不是0是1,在你在使用除法和取余等操作的时候,自然用到了自然数的0这个特性,好像是这样吧。。。。所以把n减一,最后才是真正的26进制问题,是0~25的26进制(跟0~9的十进制,0~1的二进制等相同),而不是1~26的26进制。。。好像是这个道理吧。。。
追求代码的简洁性,更简练的代码

public String convertToTitle(int n) {
		n--;
		if (n < 26) {
			return String.valueOf(intToChar(n));
		}
		return convertToTitle(n/26) + intToChar(n%26); 
	}
	
	public char intToChar(int n) {
		return (char)(n+'A');
	}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值