取出数字的每一个字符

一、大意:
这个问题很简单,就是把一个数字的每个字符分离开来。

二、问题变形:

1,逆操作:知道每个字符和位置,求这个数

2,leetcode171:给定一个像Excel表格里显示的列标题,返回对应的列号。

3,leetcode168:是2的逆操作,将数字转成字母形式。这两道题目只是把10进制换成了26进制。

三,对于问题2的两种解:
字符串形式:“AAAA”

1,正向思维:从字符串的最末尾开始计算,s.charAt(s.length() -i-1) - ‘A’ + 1

public static int titleToNumber(String s) {
        int sum = 0;
        for(int i=0;i<s.length();i++) {
            sum += (s.charAt(s.length() -i-1) - 'A' + 1)*Math.pow(26, i);
        }
        return sum;
    }

2,反向思维:从字符串的第一位开始计算,s.charAt(i) - ‘A’ +1

public static int titleToNumber2(String s) {
        int sum = 0;
        int tem = 0;
        for(int i=0;i<s.length();i++) {
            tem = s.charAt(i) - 'A' +1;
            sum = sum * 26 + tem;
        }
        return sum;
    }

四、对于问题3的解

class Solution(object):
    def convertToTitle(self, n):
        """
        :type n: int
        :rtype: str
        """
        s = ""
        while n != 0:
            s = chr((n-1)%26 + ord('A')) + s
            n = (n-1)/26
        return s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值