取出数字的每一个字符

news/2024/7/21 6:35:28 标签: leetcode, excel

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

二、问题变形:

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

http://www.niftyadmin.cn/n/1435123.html

相关文章

leetcode_169(主元素查找)

一、题目大意&#xff1a; 给定size 为n的数组&#xff0c;查找出主元素&#xff0c;就是出现次数大于n/2次的元素。你可以假定数组非空&#xff0c;而且主元素一定存在。 二、分析 1&#xff0c;不难想到&#xff0c;出现半数以上的元素最多只有一个。 2&#xff0c;选出出…

leetcode_350(求两个数组的交集)

一&#xff0c;题目大意 给定两个数组&#xff0c;编写函数计算它们的交集。 注意&#xff1a; 结果中的每个元素的出现次数应与其在两个数组中同时出现的次数一样多。 结果可以采用任意顺序。 进一步思考&#xff1a; 如果数组已经排好序&#xff0c;怎样优化你的算法&a…

leetcode_206(链表反转)

一、题目大意 反转一个单链表&#xff0c;实现递归和非递归两种形式 二、链表节点 public class ListNode {int val;ListNode next;public ListNode(int val) {this.val val;} } 三&#xff0c;分析 1&#xff0c;非递归解决方案&#xff1a;最容易想到的是使用三个指针&…

leetcode_13(罗马数字变成十进制)

一、题目大意 Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. &#xff08;把一个罗马数字变成十进制&#xff09; 二、分析 1&#xff0c;罗马数字计数规则&#xff1a; a. 若干相同数字连写表示的数是…

leetcode_401(二进制表)

一、题目大意 一个二进制手表顶端有4盏LED灯表示小时(0-11)&#xff0c;底部有6盏LED灯表示分钟(0-59)。 每一盏LED灯表示一个0或1&#xff0c;最右端为最低位。 例如上图中的例子读数为”3:25”。 给定一个非负整数n表示当前燃亮的LED灯数&#xff0c;返回所有可能表示的时…

leetcode_447(boomerang的个数)

一、题目大意&#xff1a; 给定平面上的n个两两不同的点&#xff0c;一个“回飞镖”是指一组点(i, j, k)满足i到j的距离i到k的距离&#xff08;考虑顺序&#xff09; 计算回飞镖的个数。你可以假设n最多是500&#xff0c;并且点坐标范围在 [-10000, 10000] 之内。 二、分析 …

leetcode_415(两个数字字符串相加,模拟大数相加)

一、题目大意 给出两个字符串形式的非负数num1和num2&#xff0c;返回num1和num2之和。 注意&#xff1a; 1、num1和num2的长度都小于5100。 2、num1和num2都只包含数字0-9。 3、num1和num2都不包含处于首位的0。 4、你不能使用任何内置的大数库或者直接将输入转化成整型…

leetcode_459(重复子串模式)

一、题目大意 给定一个非空字符串&#xff0c;判断它是否可以通过自身的子串重复若干次构成。你可以假设字符串只包含小写英文字母&#xff0c;并且长度不会超过10000 二、分析 1&#xff0c; kmp模式匹配算法&#xff0c;这是模式匹配最快的的算法&#xff0c;复杂度是O(n)…