JavaScript PAT乙级题解 1057 数零壹

给定一串长度不超过 105 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有多少 0、多少 1。例如给定字符串 PAT (Basic),其字母序号之和为:16+1+20+2+1+19+9+3=71,而 71 的二进制是 1000111,即有 3 个 0、4 个 1。

输入格式:

输入在一行中给出长度不超过 105、以回车结束的字符串。

输出格式:

在一行中先后输出 0 的个数和 1 的个数,其间以空格分隔。注意:若字符串中不存在字母,则视为 N 不存在,也就没有 0 和 1。

输入样例:

复制代码
PAT (Basic)

输出样例:

复制代码
3 4

题解如下:

20/20

先将字符串全部转成小写,遍历字符串求出每个英文字母的序号并进行累加,得到sum,再对sum进行二进制转换,判断每次求余得到的是0/1,对应变量++

javascript 复制代码
/**
 * 2024/04/08
 * 20/20
 */
const readline = require("readline");
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

rl.on("line", function (data) {
  // 将字符串中的所有英文字母转换为小写
  data = data.toLowerCase();
  let sum = 0;
  for (let i = 0; i < data.length; i++) {
    if (data[i] >= "a" && data[i] <= "z") {
      // a的ascii码为97,从1开始排序,减96
      sum += data[i].charCodeAt(0) - 96;
    }
  }
  toBinary(sum);
  console.log(zeroNum, oneNum);
});

// 0出现的次数
let zeroNum = 0;
// 1出现的次数
let oneNum = 0;
function toBinary(data) {
  if (data !== 0) {
    if (data % 2 === 0) {
      zeroNum++;
    } else {
      oneNum++;
    }
    toBinary(Math.floor(data / 2));
  }
}
相关推荐
漫随流水1 小时前
leetcode算法(111.二叉树的最小深度)
数据结构·算法·leetcode·二叉树
web小白成长日记8 小时前
企业级 Vue3 + Element Plus 主题定制架构:从“能用”到“好用”的进阶之路
前端·架构
じ☆冷颜〃8 小时前
黎曼几何驱动的算法与系统设计:理论、实践与跨领域应用
笔记·python·深度学习·网络协议·算法·机器学习
数据大魔方9 小时前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
POLITE39 小时前
Leetcode 23. 合并 K 个升序链表 (Day 12)
算法·leetcode·链表
APIshop9 小时前
Python 爬虫获取 item_get_web —— 淘宝商品 SKU、详情图、券后价全流程解析
前端·爬虫·python
楚来客9 小时前
AI基础概念之八:Transformer算法通俗解析
人工智能·算法·transformer
风送雨9 小时前
FastMCP 2.0 服务端开发教学文档(下)
服务器·前端·网络·人工智能·python·ai
XTTX1109 小时前
Vue3+Cesium教程(36)--动态设置降雨效果
前端·javascript·vue.js
Echo_NGC223710 小时前
【神经视频编解码NVC】传统神经视频编解码完全指南:从零读懂 AI 视频压缩的基石
人工智能·深度学习·算法·机器学习·视频编解码