当前位置: 首页 > news >正文

C/C++每日一练(20230224)

目录

1. 字符串排序

2. Excel表列名称

3. 颠倒二进制位

附录:

位移运算符

左移运算符<<

1.无符号

2.有符号

右移运算符>>

1.无符号

2.有符号

程序测试


1. 字符串排序

编写程序,输入若干个字符串。

要求:
(1)按字符串长度的大小升序输出各个字符串。
(2)按字符串中字符的ASCII码值大小升序输出各个字符串。

代码:

#include <string>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;bool compare(string a,string b) {if (a.length() != b.length()) {return a.length() < b.length();}return a < b;
}int main()
{vector<string>list;string inputString;while (cin>>inputString) {if (inputString == "0") {break;}list.push_back(inputString);}sort(list.begin(),list.end(),compare);for (int i=0; i<list.size(); i++) {cout<<list[i]<<endl;}return 0;
}

输入输出: (略)

2. Excel表列名称

给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。

例如:

A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28 
...

示例 1:

输入:columnNumber = 1
输出:"A"

示例 2:

输入:columnNumber = 28
输出:"AB"

示例 3:

输入:columnNumber = 701
输出:"ZY"

示例 4:

输入:columnNumber = 2147483647
输出:"FXSHRXW"

提示:

  • 1 <= columnNumber <= 231 - 1

代码:

#include <bits/stdc++.h>
using namespace std;class Solution
{
public:string convertToTitle(int n){string res;while (n){int temp = n % 26;n /= 26;if (temp)res.push_back('A' + temp - 1);else{res.push_back('Z');n--;}}reverse(res.begin(), res.end());return res;}
};int main()
{Solution s;cout << s.convertToTitle(1) << endl;cout << s.convertToTitle(28) << endl;cout << s.convertToTitle(701) << endl;cout << s.convertToTitle(2147483647) << endl;return 0;
}

输出:

A
AB
ZY
FXSHRXW

3. 颠倒二进制位

颠倒给定的 32 位无符号整数的二进制位。

提示:(仅对Java而言,C++用不到批提示)

  • 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。
  • 在 Java 中,编译器使用二进制补码(https://baike.baidu.com/item/二进制补码/5295284)记法来表示有符号整数。因此,在 示例 2 中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825

示例 1:

输入:n = 00000010100101000001111010011100
输出:964176192 (00111001011110000010100101000000)
解释:输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596 因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000

示例 2:

输入:n = 11111111111111111111111111111101
输出:3221225471 (10111111111111111111111111111111)
解释:输入的二进制串 11111111111111111111111111111101 表示无符号整数 4294967293,因此返回 3221225471 其二进制表示形式为 10111111111111111111111111111111 。

提示:

  • 输入是一个长度为 32 的二进制字符串

进阶: 如果多次调用这个函数,你将如何优化你的算法?

代码:

#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:uint32_t reverseBits(uint32_t n){uint32_t res = 0;for (int i = 0; i < 32; i++){res <<= 1;res |= n & 1;n >>= 1;}return res;}
};int main()
{Solution s;cout << s.reverseBits(43261596) << endl;cout << s.reverseBits(4294967293) << endl;return 0;
}

输出:

964176192
3221225471


附录:

位移运算符

是位操作运算符的一种。移位运算符可以在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。

左移运算符<<

1.无符号

语法格式:需要移位的数字<<移位的次数n
运算规则:按二进制形式把所有数字向左移动相应的位数,高位移出(舍弃),低位的空位补0。相当于乘以2的n次方
例如:4<<2 ,就是将数字4左移2位
过程:4的二进制形式:00000000 00000000 00000000 00000100;然后把高位2个0移出,其余所有位向左移动2位,低位补0,得到:00000000 00000000 00000000 00010000;十进制数为16,16=4*22。

2.有符号

如果你左移有符号的数字,以至于符号位受影响,则结果是不确定的。

右移运算符>>

1.无符号

语法格式:需要移位的数字>>移位的次数n
运算规则:按二进制形式把所有数字向右移动相应的位数,低位移出(舍弃),高位的空位补0。相当于除以2的n次方
例如:4>>2 ,就是将数字4左移2位
过程:4的二进制形式:00000000 00000000 00000000 00000100;然后把低位2个0移出,其余所有位向右移动2位,高位补0,得到:00000000 00000000 00000000 00000001;十进制数为1,1=4÷22。

2.有符号

语法格式:需要移位的数字>>移位的次数n
运算规则:按二进制形式把所有数字向右移动相应的位数,低位移出(舍弃),正数,高位的空位补0。负数,高位的空位补1.

程序测试

#include <iostream>
#include <bitset>
using namespace std;int main() {unsigned short short1 = 4;    bitset<16> bitset1{short1};   // the bitset representation of 4cout << bitset1 << endl;  // 0000000000000100unsigned short short2 = short1 << 1;     // 4 left-shifted by 1 = 8bitset<16> bitset2{short2};cout << bitset2 << endl;  // 0000000000001000unsigned short short3 = short1 << 2;     // 4 left-shifted by 2 = 16bitset<16> bitset3{short3};cout << bitset3 << endl;  // 0000000000010000return 0;
}
#include <iostream>
#include <bitset>
using namespace std;int main() {short short1 = 16384;    bitset<16> bitset1{short1};cout << bitset1 << endl;  // 0100000000000000 short short2 = short1 << 1;bitset<16> bitset2{short2};  // 16384 left-shifted by 1 = -32768cout << bitset2 << endl;  // 100000000000000short short3 = short1 << 14;bitset<16> bitset3{short3};  // 4 left-shifted by 14 = 0cout << bitset3 << endl;  // 000000000000000  
}
#include <iostream>
#include <bitset>
using namespace std;int main() {unsigned short short11 = 1024;bitset<16> bitset11{short11};cout << bitset11 << endl;     // 0000010000000000unsigned short short12 = short11 >> 1;  // 512bitset<16> bitset12{short12};cout << bitset12 << endl;     // 0000001000000000unsigned short short13 = short11 >> 10;  // 1bitset<16> bitset13{short13};cout << bitset13 << endl;     // 0000000000000001unsigned short short14 = short11 >> 11;  // 0bitset<16> bitset14{short14};cout << bitset14 << endl;     // 0000000000000000}
}
#include <iostream>
#include <bitset>
using namespace std;int main() {short short1 = 1024;bitset<16> bitset1{short1};cout << bitset1 << endl;     // 0000010000000000short short2 = short1 >> 1;    // 512bitset<16> bitset2{short2};cout << bitset2 << endl;     // 0000001000000000short short3 = short1 >> 10;    // 1bitset<16> bitset3{short3};       cout << bitset3 << endl;     // 0000000000000001short neg1 = -16;bitset<16> bn1{neg1};cout << bn1 << endl;    // 1111111111110000short neg2 = neg1 >> 1; // -8bitset<16> bn2{neg2};cout << bn2 << endl;    // 1111111111111000short neg3 = neg1 >> 2; // -4bitset<16> bn3{neg3};cout << bn3 << endl;    // 1111111111111100short neg4 = neg1 >> 4; // -1bitset<16> bn4{neg4};        cout << bn4 << endl;    // 1111111111111111short neg5 = neg1 >> 8; // -1???bitset<16> bn5{neg5};        cout << bn5 << endl;    // 1111111111111111return 0;}

相关文章:

C/C++每日一练(20230224)

目录 1. 字符串排序 2. Excel表列名称 3. 颠倒二进制位 附录&#xff1a; 位移运算符 左移运算符<< 1.无符号 2.有符号 右移运算符>> 1.无符号 2.有符号 程序测试 1. 字符串排序 编写程序&#xff0c;输入若干个字符串。 要求: &#xff08;1&#x…...

基于YOLO的酸枣病虫害检测识别实践

在我前面的博文中对于农作物病虫害的检测识别已经做过了&#xff0c;不过那个主要是针对水稻的&#xff0c;文章如下&#xff1a;《基于yolov5的轻量级水稻虫害目标检测项目实践》感兴趣的话可以自行移步阅读。这里主要是针对酸枣常见的几种病虫害检测检测识别&#xff0c;首先…...

WAF:ModSecurity on Nginx(15)

预备知识 Nginx概述 Nginx ("engine x") 是一个高性能的HTTP和 反向代理 服务器&#xff0c;也是一个 IMAP/POP3/SMTP服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的&#xff0c;第一个公开版本0.1.0发布于2004年10月4日。其将源代…...

Qt 第3课、Qt 中的字符串类

1、C 标准库 STL STL 是意义上需要与C 一同发布的标准库STL 是一套以模板技术完成的 C类库STL 中包含了常用的算法和数据结构STL 包含了字符串类 2、Qt 和 STL STL 的具体实现依赖于编译器生产厂商STL 的 “标准” 只是其接口是标准的 — 相同的全局函数 — 相同的算法类和数…...

Vulnhub靶场----6、DC-6

文章目录一、环境搭建二、渗透流程三、思路总结一、环境搭建 DC-6下载地址&#xff1a;https://download.vulnhub.com/dc/DC-6.zip kali&#xff1a;192.168.144.148 DC-6&#xff1a;192.168.144.154 靶机描述&#xff1a;选择带k01的密码后面会用到 访问192.168.144.154&…...

华为OD机试真题Python实现【去重求和】真题+解题思路+代码(20222023)

去重求和 给定一个数组,编写一个函数, 计算他的最大N个数和最小N个数的和, 需要对数组进行去重。 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Python)真题目录汇总 输入 第一行输入M,M表示数组大小 第二行输入M个数,表示数组内容 第三行输入N表示需要…...

lammps教程:Ovito选择特定晶粒的方法

大家好&#xff0c;我是小马老师。 本文介绍如何使用ovito提取特定的晶粒。 在多晶的lammps模拟中&#xff0c;可能会对某一个特定晶粒的变形情况进行分析&#xff0c;此时&#xff0c;需要找到这个晶粒&#xff0c;并进行单独分析。 ovito有专用的晶粒识别命令&#xff0c;…...

DevEco Studio 3.1 Beta1版本发布——新增六大关键特性,开发更高效

智能代码编辑、端云一体化开发、低代码开发个性化…… 六大新增关键特性&#xff0c;开发更高效&#xff0c;体验更觉妙&#xff01; 立即点击链接下载&#xff0c;做DevEco Studio 3.1 Beta1版本尝鲜者&#xff01; 下载链接&#xff1a;HUAWEI DevEco Studio和SDK下载和升级 …...

【蓝桥杯每日一题】二分算法

&#x1f34e; 博客主页&#xff1a;&#x1f319;披星戴月的贾维斯 &#x1f34e; 欢迎关注&#xff1a;&#x1f44d;点赞&#x1f343;收藏&#x1f525;留言 &#x1f347;系列专栏&#xff1a;&#x1f319; 蓝桥杯 &#x1f319;我与杀戮之中绽放&#xff0c;亦如黎明的花…...

Spring Batch 高级篇-并行步骤

目录 引言 概念 案例 转视频版 引言 接着上篇&#xff1a;Spring Batch 高级篇-多线程步骤&#xff0c;了解Spring Batch多线程步骤后&#xff0c;接下来一起学习一下Spring Batch 高级功能-并行步骤 概念 并行步骤&#xff0c;指的是某2个或者多个步骤同时执行。比如下…...

对spring的@Cacheable缓存理解

1 什么是缓存第一个问题&#xff0c;首先要搞明白什么是缓存&#xff0c;缓存的意义是什么。对于普通业务&#xff0c;如果要查询一个数据&#xff0c;一般直接select数据库进行查找。但是在高流量的情况下&#xff0c;直接查找数据库就会成为性能的瓶颈。因为数据库查找的流程…...

力扣-市场分析

大家好&#xff0c;我是空空star&#xff0c;本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目&#xff1a;1158. 市场分析二、解题1.错误示范①提交SQL运行结果2.正确示范①提交SQL运行结果3.错误示范②提交SQL运行结果4.正确示范②提交SQL运行结果5.其他总结前…...

【2357. 使数组中所有元素都等于零】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个非负整数数组 nums 。在一步操作中&#xff0c;你必须&#xff1a; 选出一个正整数 x &#xff0c;x 需要小于或等于 nums 中 最小 的 非零 元素。nums 中的每个正整数都减去 x。 返回使 n…...

什么品牌的游戏蓝牙耳机比较好?玩游戏延迟低的蓝牙耳机推荐

游戏耳机的出现其实最主要的作用就是让玩家能够更专注的沉浸在游戏世界内&#xff0c;在声音层面去享受游戏的沉浸感&#xff0c;游戏最重要的就是操作灵敏&#xff0c;需要快速通过声音来判断敌人走向&#xff0c;所以小编特意整理了一期玩游戏延迟低的蓝牙耳机。 一、南卡小…...

day 33 状态压缩dp

二维状态压缩dp对于解决哈密顿回路问题的状态压缩dp只能计算固定起点到其他点的总方案数或最小路径等回路计数小蓝现在在第一栋教学楼&#xff0c;他想要访问每栋教学楼正好一次&#xff0c;最终回到第一栋教学楼&#xff08;即走一条哈密尔顿回路&#xff09;可看做&#xff1…...

扬帆优配|超3600股飘绿,人民币贬值近300点!外资净卖近38亿

今天早盘&#xff0c;A股整体震动调整&#xff0c;白马蓝筹股体现较弱&#xff0c;上证50、沪深300指数均跌超1%。 盘面上&#xff0c;国防军工、造纸、数字钱银、IT设备等板块逆势活跃&#xff0c;酿酒、酒店餐饮、钙钛矿电池、有色等板块跌幅居前。两市半日成交4577亿&#x…...

【编程基础之Python】6、Python基础知识

【编程基础之Python】6、Python基础知识Python基础知识Python的基本要素模块语句表达式注释Python的代码格式Python基础知识 Python 是一种高级的、动态的、解释型的编程语言&#xff0c;具有简单易学、开发效率高、可读性强等特点&#xff0c;广泛应用于数据科学、Web 开发、…...

selenium基本操作

爬虫与反爬虫之间的斗争爬虫&#xff1a;对某个网站数据或图片感兴趣&#xff0c;开始抓取网站信息&#xff1b;网站&#xff1a;请求次数频繁&#xff0c;并且访问ip固定&#xff0c;user_agent也是python&#xff0c;开始限制访问&#xff1b;爬虫&#xff1a;通过设置user_a…...

思科设备命令讲解(超基础二)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a;小刘主页 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有收获&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的绽放&#xff0…...

HTML基础(3)

HTML基础单选框、复选框、下拉框文本框< script >标签属性< script >基本使用单选框、复选框、下拉框 文本框 < script >标签属性 type属性定义script元素包含或src引用的脚本语言。属性值是MIME类型&#xff0c;包括text/javascript,text/ecmascript, appl…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...