文档章节

剑指Offer(Java版):把十进制数字用A~Z表示成二十六进制。

一贱书生
 一贱书生
发布于 2016/07/18 12:03
字数 338
阅读 5
收藏 0

题目:在Excel2003中,用A表示第1列,B表示第2列......Z表示第26列,AA表示第27列,AB表示第28列......以此类推。请写出一个函数,输入用字母表示的列号编码,输出它是第几列。

这是一道关于进制的题目,其本质是把十进制数字用A~Z表示成二十六进制。 

A是65,A到Z是26个字母,A对应1,相当于26*0+65-65+1=1;AB则是26*1+66-65+1=28,ABC则是26*28+67-65+1=731,

package cglib;

public class List1
{  
    public static int numberTransform2(String str)   
      
    {    
        char[] strArray = str.toCharArray();
        int num = 0;
        if(strArray.length < 0)//如果没有输入字符,则报错。  
        {  
            System.out.println("没有输入字符");  
            return -1;  
         }  
        int sum = 0;
    for(int i =0; i < strArray.length; i++)   
      
      {    
    System.out.println("i="+i+",strArray[i]="+strArray[i]);
    System.out.println("((int)(strArray[i] -'A'))="+((int)(strArray[i] -'A')));
     int temp = strArray[i] - 'A';
     System.out.println("减A的值后temp="+temp);
     if(temp >= 26 || temp < 0)  
     {  
         System.out.println("字符不合规范");    
         return -1;  
     }  
       sum = 26*sum + temp + 1;
       //num = num * 26 + ((int)(strArray[i] -'A') +1);
       //System.out.println("运算后num="+num);
       System.out.println("运算后sum="+sum);
      
     }               
      
     return sum;    
      
    }    
     
 
    public static void main(String[] args) {  
        
        System.out.println(numberTransform2("AB"));  
        
}
}

 

输出:

i=0,strArray[i]=A
((int)(strArray[i] -'A'))=0
减A的值后temp=0
运算后sum=1
i=1,strArray[i]=B
((int)(strArray[i] -'A'))=1
减A的值后temp=1
运算后sum=28
28

 

© 著作权归作者所有

一贱书生
粉丝 19
博文 724
码字总数 600123
作品 0
私信 提问
Java拾遗:014 - 二进制、进制转换及位运算

二进制 二进制是计算机中广泛采用的一种数制,由0和1组成,进位规则为“逢二进一”,如:0001表示十进制中的1,0010表示十进制中的2。二进制拥有大量非学有用的特性,详情参考:百度百科:二...

一别丶经年
2018/08/02
0
0
[算法总结] 3 道题搞定 BAT 面试——堆栈和队列

本文首发于我的个人博客:尾尾部落 0. 基础概念 栈:后进先出(LIFO) 队列:先进先出(FIFO) 1. 栈的 java 实现 2. 队列的 java 实现 3. 用两个栈实现队列 剑指offer:用两个栈实现队列 Le...

繁著
2018/09/04
0
0
黑马程序员.bobo.DAY.2

class VarDemo{public static void main(String[] args){System.out.println(60);System.out.println(0x3c);}} 11002(0)+12(1)+12(2)= 数值2(0)+数值2(1)+数值2(2) 0 0 1 1 0 1 0 1 =128 64 ......

BobbyLou
2015/05/14
0
0
进制之间的转换及Java代码实现

N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。 八进制 八进制,Octal,缩写OCT或O,一种以8为基数的计数法,以0开头(注意,0是零而不是字母O),采用0,1,2,3,4,5,6,7八个数字...

G_66_hero
2018/09/18
0
0
LeetCode算法题-Excel Sheet Column Number(Java实现)

这是悦乐书的第182次更新,第184篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第41题(顺位题号是171)。给定Excel工作表中显示的列标题,返回其对应的列号。例如: A - > ...

小川94
2018/11/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JWT学习总结

官方 https://jwt.io 英文原版 https://www.ietf.org/rfc/rfc7519.txt 或 https://tools.ietf.org/html/rfc7519 中文翻译 https://www.jianshu.com/p/10f5161dd9df 1. 概述 JSON Web Token(......

冷基
28分钟前
2
0
AOP的学习(1)

AOP 理解AOP编程思想(面向方法、面向切面) spring AOP的概念 方面 -- 功能 目标 -- 原有方法 通知 -- 对原有方法增强的方法 连接点 -- 可以用来连接通知的地方(方法) 切入点 -- 将用来插入...

太猪-YJ
今天
4
0
一张图看懂亮度、明度、光度、光亮度、明亮度

亮度、明度、光亮度,Luminance和Brightness、lightness其实都是一个意思,只是起名字太难了。 提出一个颜色模型后,由于明度的取值与别人的不同,为了表示区别所以就另想一个词而已。 因此在...

linsk1998
昨天
8
0
Python应用:python链表示例

前言 python链表应用源码示例,需要用到python os模块方法、函数和类的应用。 首先,先简单的来了解下什么是链表?链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是...

python小白1
昨天
4
0
Source Insight加载源码

Source Insight是一个图形化的源代码查看工具(当然也可以作为编译工具)。如果一个项目的源代码较多,此工具可以很方便地查找到源代码自建的依赖关系。 1.创建工程 下图为Snort源代码的文件...

天王盖地虎626
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部