一道有趣的算法题:仿照Excel的列编号,给定一个数字,输出该列编号字符串

【华为机试真题 Python实现】一个正整数到 Excel 编号之间的转换 文章目录题目描述示例 1:示例 2:示例 3:示例 4:参考代码 题目描述 完成从一个正整数到 Excel 编号之间的转换。 用过 excel 的都知道 excel 的列编号是这样的: abc…zaaabac…azbabbbc…yzzazbzc…zzaaaaabaac… 分别代表以下编号: 123…26272829…52535455…676677678679…702703704705…请写个函数,完成从一个正整数到这种字符串之间的转换。 功能正整数到 Excel 编号字符串转换。 ... 阅读详情


         By Long Luo


最近遇到一个算法题:

仿照Excel的列编号,给出一个数字,输出该列编号字符串。


例如:A对应1,Z对应26,AA对应27,AZ对应52 ......


这个题目是一个典型的26进制思路去处理,但是这个题目里面有很多陷阱,在1, 26, 52等特殊情况进行考虑,经过晚上接近1个小时的编写,完成的代码如下:


C++代码如下:

#include <iostream>
#include <string.h>

using namespace std;

//函数itos:正整数到编号转换
//num:输入的正整数,pcout:输出,Max:输出控件最大长度
void itos(int num, char *pcout )
{
     char *res = new char[255];
     int m = 0, n = 0;

     while((num >= 1) && (n < 255))
    {
         m = num % 26;
          if (m != 0)
         {
             res[n] = 'A' + m - 1;
         }
          else
         {
             res[n] = 'Z';
              num--;
         }
         
          num /= 26;
         n++;
    }

     for(m = n; m > 0; m--)
    {
          pcout[n - m] = res[m - 1];
    }

     pcout[n] = '\0' ;
     delete[] res;

     return;
}

//soti:字符串到数字的转换
int stoi(char *cha)
{
     int m = 0, n = 0, i = 0, val = 0, a = 0;
     char *pc = cha ;

     while(*pc != '\0' )
    {
          //后移到个位 
         pc++;
         n++;
    }
    
     for(i = 1; i <= n; i++)
    {
          //位循环
         pc--;
         a = i;
         m = 1;
         
          while(a > 1)
         {
              //位权
             m *=26;
             a--;
         }
         
         m *= (*pc - 'A' +1);
         val += m;
    }
    
     return val;
}

int main()
{
     char out[255] = {0};
    printf( "out = %s\n", out);
    itos(32, out);
    printf( "out = %s\n", out);

    getchar();

     return true ;
}

Java代码如下:

package com.Algorithms.excelrow;

/*
 * @author: Long Luo
 * @Created By Frank Luo @2014.05.01
 */
public class ExcelRow {
	public static void main(String args[]) {

		System.out.println("25=" + int2Str(5) + ",28=" + int2Str(28) + ",123="
				+ int2Str(123));
		System.out.println("C=" + str2Int("C") + ",ZA" + str2Int("ZA")
				+ ",AAF=" + str2Int("AAF"));
	}

	/*
	 * @Description: covert the String to Integer.
	 */
	public static int str2Int(String input) {
		int val = 0;
		int len = input.length();
		int mul = 0;

		for (int i = len - 1, j = 0; i >= 0; i--, j++) {
			mul = 1;

			int temp = input.charAt(i) - 'A' + 1;
			double weiquan = Math.pow(10, j);
			mul = (int) (temp * weiquan);
			val += mul;

			System.out.println("temp=" + temp + ",weiquan=" + weiquan + ",mul="
					+ mul + ",val=" + val);
		}

		return val;
	}

	/*
	 * @Description: covert the Integer to String.
	 */
	public static String int2Str(int rowNum) {
		StringBuffer temp = new StringBuffer(255);
		char ch;

		while (rowNum >= 1) {

			int i = rowNum % 26;
			if (i != 0) {
				ch = (char) ('A' + i - 1);
				temp = temp.append(ch);
			} else {
				ch = 'Z';
				temp = temp.append(ch);
				rowNum--;
			}

			System.out.println("temp=" + temp + ",ch=" + ch + ",rowNum="
					+ rowNum);
			rowNum /= 26;
		}

		return temp.reverse().toString();
	}

}



以上代码均测试通过。

如有不当错误之处,敬请批评指正,如有更好的方法,也请共同探讨, Thx:-)

Long Luo Created at PM22:25 ~ 22:40 @May 02nd, 2014 at Shenzhen, China.

独立博客链接:点击打开链接










如何将列的数字编号,转化为EXcel的字母表示的列编号 其中,n是要转换的列编号,colName是转换后的Excel列编号。该函数的实现方式与上面Python的实现类似,将10进制的列编号转换为26进制的字母表示。其中,n是要转换的列编号,string是转换后的Excel列编号。该函数的实现方式是将10进制的列编号转换为26进制的字母表示。Excel中的列编号是用字母来表示的,从A开始,到Z结束,然后是AA、AB、AC…以此类推,例如第1列是A,第2列是B,第27列是AA,第28列是AB,以此类推。 阅读详情

相关推荐

【华为OD机试真题】385、正整数到Excel编号之间的转换 | 机试真题+思路参考+代码解析(C++、Java、Py)

题目描述 >用过excel的都知道excel的列编号是这样的: a b c.... z aa ab ac .... az ba bb bc ... yz za zb zc.... zz aaa aab aac.... 分别代表以下编号: 123... 26 27 28 29 .... 52 53 54 55.... 676 677 678 679 .... 702 703 704 705.... 请写个函数,完成从一个正整数到这种字符串之间的转换

KJ.JK 1万+

一个正整数到 Excel 编号之间的转换

一个正整数到 Excel 编号之间的转换 题目描述:完成从一个正整数到 Excel 编号之间的转换。 用过 excel 的都知道 excel 的列编号是这样的: abc…zaaabac…azbabbbc…yzzazbzc…zzaaaaabaac… 分别代表以下编号: 123…26272829…52535455…676677678679…702703704705…请写个函数, 完成从一个正整数到这种字符串之间的转换。 原型:intTranslate(intN, string & ans) 功能:正整数

Mwwwwwwww的博客 1014

如何将Excel的列的字母编号转化为数字

【代码】如何将Excel的列的字母编号转化为数字。

zhangzhechun的专栏 538

一道面试题,把excel的列的名称转换为数字

这是一道某公司的上机面试题: microsoft excel 中栏目是用 A,B,C...Z;AA,AB,...ZZ ... ZZZZ ....这样表示序列的它对应是这样 0,1,2,...25;26,27...701 ...475253

justin_bkdrong的专栏 3021

【2025华为OD机考真题】- 正整数到Excel编号之间的转换(B卷-100分)(Golang版)

🔔本文收录于「最新最全华为OD机试真题(Golang版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!! 🚫提醒:拒绝一切代考/替考,违法必究!专栏所写题库均搜集于互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验所撰,欢迎订阅。    💗订阅福利:一次订阅,可永久免费阅读,提供在线答疑解惑,后续题库更新

**My Coding Family** 915

【华为OD机试真题 C语言】385、正整数到Excel编号之间的转换 | 机试真题+思路参考+代码解析

题目描述 >用过excel的都知道excel的列编号是这样的: a b c.... z aa ab ac .... az ba bb bc ... yz za zb zc.... zz aaa aab aac.... 分别代表以下编号: 123... 26 27 28 29 .... 52 53 54 55.... 676 677 678 679 .... 702 703 704 705.... 请写个函数,完成从一个正整数到这种字符串之间的转换

KJ.JK 1598

正整数转换成Excel表示法

题目:         Excel表中,横轴是用A,B,C...,Z,AA,AB,AC,...ZZ,AAA,AAB......这样的序列来表示的。请实现一个函数string f(int x),把正整数转换成Excel表示法,例如:f(1)="A",f(2)="B",f(27)="AA"。 分析:         我的第一感觉是A,B,C...,Z,AA,AB,AC,...ZZ,AAA,AAB

chasdmeng的专栏 3386

整数转换为excel列

完成从一个正整数到Excel编写之间的转换。

输入数字列号获取EXCEL的列编号

根据输入的数字列号,转换为标准的excel列编号,比如:29对应AC FUNCTION z_num_to_excel_column. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" REFERENCE(IV_NUM) TYPE I ...

王小磊 5773

深入解析安卓性能分析工具systrace/atrace的使用技巧与实战场景

本文深入解析了安卓性能分析工具systrace/atrace的核心使用技巧与实战场景。文章澄清了环境搭建的常见误区,详细拆解了命令参数,并通过列表卡顿、启动优化等具体案例,手把手指导开发者利用这些工具精准定位性能瓶颈,提升应用流畅度。

yyy34的博客 239

PCIE Lane Margining Linux 环境配置

Copy all the provided files in folder PYC38 or PYC310 to the created pcie_lmt folder. Index of /ftp/python/3.8.10/Copy below commands to a file and rename it as "scan_pcie.py", the commands are from "685662 PCIe-LMT-Gen4_Gen5-r0p77.pdf" in the lane margi

mysongshine的博客 1433

【华为2015暑期实习生上机题】仿照Excel的列编号

这是本人上个月做的,武汉地区的上机题中的第三个。 仿照Excel的列编号,给出该列编号字符串,输出一个数字。 例如:a对应1,z对应26,aa对应27,az对应52 …… #include #include using namespace std; //字符串到数字的转换,相当于26进制 int stoi(char *s) { int n=0;//字符串长度 int i=0;//循

Hao_09的专栏 1761

Windows下Colmap编译安装全攻略:从Boost到CUDA的避坑指南

本文详细介绍了在Windows系统下编译安装Colmap三维重建工具的完整流程与实战经验。针对Boost库版本兼容性、CUDA与Visual Studio的版本匹配等常见难题提供了具体的避坑指南和解决方案,帮助开发者高效完成从环境配置到最终部署的全过程。

weixin_28235513的博客 198

Excel的列编号问题

很早以前在别人博客里看到的题目:用过excel的都知道excel的列编号是这样的:a b c .... z aa ab ac .... az ba bb bc .... yz za zb zc .... zz aaa aab aac .... 分别代表以下编号:1 2 3 .... 26 27 28 29 .... 52 53 54 55 .... 676 677 678 679 ....

==Sdhjt的窝== 2241

从镜头到像素:深入解析Camera、Sensor与V4L2的协同工作流

本文深入解析了摄像头从物理成像到软件控制的完整工作流。详细介绍了镜头、传感器(Sensor)与V4L2框架的协同机制,涵盖光电转换、同步信号、ISP图像处理等核心环节,并通过实战演示了如何使用v4l2-ctl工具进行调试,为嵌入式开发和驱动调试提供系统指南。

weixin_29230805的博客 389

SiamFC++笔记

SiamFC++: Towards Robust and Accurate Visual Tracking with Target Estimation Guidelines 文章根据这些思路:引入分类和目标状态估计分支(G1),无歧义的分类得分(G2),无先验知识的跟踪(G3)和评估质量得分(G4)来设计SiamFC ++。 SiamRPN ++和SiamFC ++的比较(红色部分代表得分高的区域): guide: G1 : 分类和状态估计任务的分离:分类任务将目标从干扰物和背景中分类出来,目标状态

木木JL的博客 9431

E.Excl列编号

你一定用过 Excel 文档。在 Excel 文档中,行的编号是用连续递增的字,为了区别于行,列的编号使用字母编号。由于只有 26 个字母,Excel 采用如下的方法对列编号:A,B,C,⋯,AA,AB,AC,⋯,AZ,BA,BB,BC,⋯,ZZ,AAA,AAB,⋯⋯。 现在我们写了一个程序来求一个 Excel 表格中第 n 列的真实编号,请你完善程序空缺部分。 样例输入: 702 703 样例输...

qq_52051345的博客 344

一篇文章足够你学习Bluez,提供史上最全的Bluez教程,让你告别Bluez从入门到放弃

Bluez是真的难,说“入门到放弃”真的毫不夸张,Bluez的学习曲线陡峭,要求对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度。

朝气蓬勃 2531

HTML如何实现单元格自动编号,如何在Excel中自动为列编号?

如何在Excel中自动为列编号?您是否曾经想过在Excel中对列进行编号? 本教程将讨论一些对列进行编号的方法。通过公式= ROW()自动编号​​一列如果要根据行号对列进行编号,可以键入此公式 = ROW() 进入细胞并按 输入 键,然后将自动填充手柄拖到您需要编号的单元格上。通过公式= OFFSET(A2,-1,0)+1自动为一列编号如果要自动为列单元格编号而不是基于行号,则可以键入以下公式 =...

weixin_42500279的博客 919

Qt 5.14安装(配置MSVC 2017)

本文主要介绍Qt MSVC的安装,VS2017.

ifeng12358的博客 3709

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Excel的列编号 例如:A对应1,Z对应26,AA对应27,AZ对应52 ......

//今天华为笔试的一道上机题 Excel的列编号 例如:A对应1,Z对应26,AA对应27,AZ对应52 ......随机输入一个字符串求他对于数字,当时想了一个比较复杂的算法,虽然也OJ了,但是总是觉得开辟内存太多,后来发现其实挺简单的。总结:每道题一定要在思路清晰之后在动手敲代码,可以借助纸笔等工具来清晰你的思路,否则花很多时间。而且算法的复杂度也不高。 #include #inclu

终极无间 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

字符编号转换成数字编号的算法实现

Microsoft de Excel的列编号是字符编号:a,b,c...z,aa,ab,ac...对应的数字编号是1,2,3...27,28,29... 实现转换算法,输入字符编号(字母为小写),输出数字编号。

卡蒙奇D 2990

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【华为OD题库-109】正整数excel编号的转换-java

用过excel的都知道excel的列编号是这样的:a b c …z aa ab ac … az ba bb bc …yz za zb zc …Zz aaa aab aac …分别代表以下编号:123.…26 2728 2. …52 53 54 5 …76 67767867.…702703704 705 …请写个函数,完成从一个正整数到这种字符串之间的转换。一行,一个数字excel样式的字符串1a26z27aa。

yangqin@1225的博客 1021

正整数到excel编号之间的转换

用过excel的都知道excel的列编号是这样的: a b c .... z aa ab ac .... az ba bb bc .... yz za zb zc .... zz aaa aab aac .... 分别代表以下编号: 1 2 3 .... 26 27 28 29 .... 52 53 54 55 .... 676 677 678 679 .... 702 703 704 705 .... 请写个函数,完成从一个正整数到这种字符串之间的转换。

y245166349的专栏 271

2025A卷-正整数到Excel编号之间的转换

用过 excel 的都知道excel的列编号是这样的:分别代表以下编号:1 2 3 … 26 27 28 29 … 52 53 54 55 … 676 677 678 679 … 702 703 704 705 … 请写个函数,完成从一个正整数到这种字符串之间的转换。

tu123456s的博客 538
上一篇: 如何设计一个优秀的App?
下一篇: 学车科目二要点总结
tcpipstack
博客等级 码龄14年 329粉丝 89原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值