首页 > 编程语言 >LeetCode 算法题解之 26 进制转换 All In One

LeetCode 算法题解之 26 进制转换 All In One

时间:2023-08-23 14:45:04浏览次数:47  
标签:26 obj 进制 题解 num let result LeetCode

LeetCode 算法题解之 26 进制转换 All In One

26 进制转换

171. Excel Sheet Column Number
171. Excel 工作表列号

function titleToNumber(columnTitle: string): number {
  // 如何动态生成 字典 ✅ 26 进制
  // A-Z -> 1-26
  const strs = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  const obj = {};
  for(let i = 0; i < strs.length; i++) {
    obj[strs[i]] = i + 1;
  }
  let result = 0
  const arr = columnTitle.split('')
  let n = arr.length;
  for(let i = 0; i < n; i++) {
    let num = obj[arr[i]];
    result += num * 26 ** (n - i - 1);
  }
  return result
};


/* 

str = `A`
str.charAt(0)
// 65
str.charCodeAt(0)
// 65
str.codePointAt(0)
// 65

 */

https://leetcode.com/problems/excel-sheet-column-number/

168. Excel Sheet Column Title

168. Excel 工作表列头

function convertToTitle(n: number): string {
  let result = ``
  while (n > 0) {
    // 取余数
    let digit = n % 26
    // 向下取整,防止小数 bug ✅
    n = Math.floor(n / 26)
    if (digit === 0) {
      n -= 1
      digit = 26
    }
    // 64 => '@',ASCII code / UTF-16
    let char = String.fromCharCode(64 + digit)
    // 前面插入
    result = char + result
  }
  return result
};

/* 

ASCII code / UTF-16

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode


 */

// function convertToTitle(columnNumber:number):string {
//   let str:string = ``;
//   let num:number;
//   while (columnNumber > 0) {
//     // ???
//     num = (columnNumber - 1) % 26;
//     str = String.fromCharCode(num + 65) + str;
//     columnNumber = Math.floor((columnNumber - num) / 26);
//   }
//   return str;
// };

// function convertToTitle(columnNumber: number): string {
//   // 如何动态生成 字典 ✅ 26 进制
//   // A-Z -> 1-26
//   const strs = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
//   const obj = {};
//   for(let i = 0; i < strs.length; i++) {
//     // obj[strs[i]] = i + 1;
//     obj[i + 1] = strs[i];
//   }
//   // const dict = new Map();
//   let num = columnNumber;
//   let n = 1;
//   let result = ``;
//   // 求余数
//   let rest = num % 26;
//   if(rest === 0) {
//     result += obj[26];
//   } else {
//     result += obj[rest];
//   }
//   // 减余数
//   num = num - rest;
//   // 进位,n 倍
//   while(num > 0) {
//     // 求除数 ❌
//     // let left = num / (26 ** n);
//     let left = Math.floor(num / (26 ** n));
//     if(left > 26) {
//       left = 26
//       result += obj[26];
//     } else {
//       result += obj[left];
//     }
//     // 进位,n 倍
//     num = num - (left * 26 ** n);
//     n += 1;
//   }
//   // console.log(`result =`, result)
//   return [...result].reverse().join(``);
// };

/* 

2147483647
"denifednuZZZZZW" ❌
"FXSHRXW" 

"YZY"
25 * 26 * 26 +
26 * 26 +
25

17601



"AZY"
1 * 26 * 26 +
26 * 26 + 25
1377

  // 26**1 -> Z
  // 26**2 -> ZZ ??? 没有 0 怎么进位 ❓
  // 2 进制 0 ~ 1,8 进制 0 ~ 7, 16 进制 0 ~ F

"ZY"
26 * 26 + 25
701


 */

/* 

1
28
701
17601

Input: columnNumber = 701
Output: "ZY"

26 * 26 + 25
701

26 进制 ✅

{1: 'A', 2: 'B', 3: 'C', 4: 'D', 5: 'E', 6: 'F', 7: 'G', 8: 'H', 9: 'I', 10: 'J', 11: 'K', 12: 'L', 13: 'M', 14: 'N', 15: 'O', 16: 'P', 17: 'Q', 18: 'R', 19: 'S', 20: 'T', 21: 'U', 22: 'V', 23: 'W', 24: 'X', 25: 'Y', 26: 'Z'}

 */

https://leetcode.com/problems/excel-sheet-column-title/

demos

(

标签:26,obj,进制,题解,num,let,result,LeetCode
From: https://www.cnblogs.com/xgqfrms/p/17650033.html

相关文章

  • Google Chrome和ChromeDriver版本号不一致问题解决
    1(base)kaka@KakadeMBPbin%/Applications/Google\Chrome.app/Contents/MacOS/Google\Chrome--version2GoogleChrome116.0.5845.963(base)kaka@KakadeMBPbin%chromedriver--version4ChromeDriver114.0.5735.16(7e1ff058633f5b79b1cd7479aca585ba385......
  • 在集成H.265视频流媒体播放器EasyPlayer.js时遇到"SourceBuffer"报错,应该如何解决?
    EasyPlayer,是由TSINGSEE青犀视频推出的一款功能强大且开放性很高的H.265视频流媒体播放器。它支持H.264和H.265视频格式的播放,并具有稳定性强、流畅播放等特点。此外,EasyPlayer还有多个版本可供选择,例如EasyPlayer-RTSP、EasyPlayer-Pro、EasyPlayer.js等。有用户反馈,在使用播放器......
  • 「题解」Codeforces 1063F String Journey
    先reverse一下。不难看出选出的字符串长度为\(1,2,\cdots,k\)一定不劣,仅考虑这种形式的。然后考虑一手dp,设\(f_{i}\)表示最后一个子串是\(i\)为结尾,最长长度是多少。这样转移就是\(f_i\getsf_{j}+1,iff\s[j-f_j+1,j]\text{is}s[i-f_j,i]\text{'ssubstring}\)......
  • WebRTC 支持H265探索之路
    截至目前为止,参考了大量的文献和博客,都通过datachannel进行码流的传输,然后在浏览器端重新实现解码和渲染,因此意味着WebRTC不再具有任何的研究价值,还不如自身实现通过websocket对码流的传输,相比WebRTC庞大的体量,暂时不会做任何的调整。相信在专利面前,Google不会做任何的改善,还有UDP......
  • 视频集中存储平台EasyCVR视频融合平台接入RTSP设备出现离线情况的问题解决方案
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的......
  • 20230626 java.nio.file.Path
    介绍java.nio.file.PathpublicinterfacePathextendsComparable,Iterable,Watchable表示的是一个目录名序列,其后还可以跟着一个文件名APIstaticofPathof(Stringfirst,String...more)通过连接给定的字符串创建一个路径等同于Paths.getpublicresolve......
  • leetcode-1-two sum(brute force, hash table)
    Wecanusebruteforcetogetit,usetwoforloopiandj,whichi=1:nandj=i:n.However,thetimecomplexityisO(n^2),whichisnotefficient.Usehashtable,thefirstthingisfirststoreeveryelementtotable,thendotraverseagaintolookup......
  • CF757G 题解
    Lnk。这是一个dfs序+主席树的乱搞做法。首先把树上距离拆开,令\(\operatorname{dis}(u)\)表示\(u\)到根的路径长度:\[\left(\sum_{i=l}^r\operatorname{dis}(p_i)\right)+\left(\sum_{i=l}^r\operatorname{dis}(x)\right)-2\sum_{i=l}^r\operatorname{dis}(\operatorna......
  • Leetcode 459——重复的子字符串
    给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。示例1:输入:s="abab"输出:true解释:可由子串"ab"重复两次构成。示例2:输入:s="aba"输出:false示例3:输入:s="abcabcabcabc"输出:true解释:可由子串"abc"重复四次构成。......
  • [CEOI2011] Matching 题解
    [CEOI2011]Matching题解题外话:看了其他人题解后作为初学$kmp$的我非常蒙,因为对这个算法的核心掌握不太好,不知道怎么维护动态的序列,因此写下此题解共享经验,建议只会打模板的看看。参考资料:https://www.cnblogs.com/fusiwei/p/11944975.html思路引导:看到数据范围,又和真实......