HJ14 字符串排序HJ15 求int型正整数在内存中存储时1的个数HJ17 坐标移动

本文主要是介绍HJ14 字符串排序HJ15 求int型正整数在内存中存储时1的个数HJ17 坐标移动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

HJ14 字符串排序

字符串排序_牛客题霸_牛客网

题目分析

使用C++的标准库函数sort来简单解决。首先,我们读取给定数量的字符串,然后使用sort函数对它们进行字典序排序,最后输出排序后的字符串列表。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;int main() {int n;cin >> n; // 读取字符串的数量vector<string> strs(n);for (int i = 0; i < n; ++i) {cin >> strs[i]; // 读取每个字符串}sort(strs.begin(), strs.end()); // 使用sort函数按字典序对字符串进行排序for (const string& str : strs) {cout << str << endl; // 输出排序后的字符串}return 0;
}

我的题解:

一开始不知道sort可以直接排序字符串,于是自己写了一个比较函数逐字符比较

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>bool compare(std::string &a, std::string &b) {for (int i = 0; i < std::min(a.size(), b.size()); i++) {if (a[i] != b[i]) return a[i] < b[i];}return a.size() <= b.size();
}int main() {int n = 0;std::string word;std::vector<std::string> words;std::cin >> n;while (n--) {std::cin >> word;words.push_back(word);}std::sort(words.begin(), words.end(), compare);for (auto i:words) {std::cout << i << std::endl;}return 0;
}

HJ15 求int型正整数在内存中存储时1的个数

求int型正整数在内存中存储时1的个数_牛客题霸_牛客网

题目分析

C++中,可以通过不断地将数字右移并检查最低位是否为1来实现这一点。下面是一个简单的解决方案:

#include <iostream>
using namespace std;int countOnes(int n) {int count = 0;while (n) {count += n & 1; // 检查最低位是否为1n >>= 1; // 右移一位}return count;
}int main() {int n;cin >> n; // 读取输入的整数cout << countOnes(n); // 输出1的个数return 0;
}

我的题解

通过减去最大的2的幂次方数,逐步减少数字,直到数字变为0,从而计算1的数量。

#include <iostream>
#include <cmath>int numsofone(int& num) {if (num == 0) return 0;int result = 1, i = 0;while (pow(2, i) != num) {i++;if (std::pow(2, i) > num) {result ++;num = num - pow(2, (i - 1));i = 0;}}return result;}int main() {int num = 0;std::cin >> num;std::cout << numsofone(num) << std::endl;return 0;}

HJ17 坐标移动

题目分析

  1. 解析输入字符串:使用std::istringstreamstd::getline()读取以分号(;)分隔的命令。
  2. 处理每个命令:对于每个命令,检查其是否有效(即以ASWD开头,后跟一串数字)。
  3. 更新坐标:根据命令更新当前坐标。
  4. 输出最终坐标
#include <iostream>
#include <sstream>
#include <string>
#include <regex>int main() {std::string input;std::getline(std::cin, input); // 读取整行输入std::istringstream ss(input);std::string command;int x = 0, y = 0; // 初始坐标// 用正则表达式匹配有效命令:字母(A、S、W、D) + 数字std::regex validCommandPattern(R"([ASWD]\d+)");while (std::getline(ss, command, ';')) {if (std::regex_match(command, validCommandPattern)) {char direction = command[0];int steps = std::stoi(command.substr(1));switch (direction) {case 'A': // 向左移动x -= steps;break;case 'D': // 向右移动x += steps;break;case 'W': // 向上移动y += steps;break;case 'S': // 向下移动y -= steps;break;}}}std::cout << x << "," << y << std::endl; // 输出最终坐标return 0;
}

我的题解

不用正则

#include <iostream>
#include <string>
#include <vector>int main() {int x = 0, y = 0, num = 0;std::string line, temp;std::vector<std::string> vec;std::getline(std::cin, line);for (int i = 0; i < line.size(); i++) {if (line[i] != ';') {temp.push_back(line[i]);}else{vec.push_back(temp);temp.clear();}}for (std::string i : vec) {bool isnum = true;if (i.size() <= 1 | i.size() > 3) continue;if (i[0] == 'A' ||i[0] == 'W' ||i[0] == 'S' ||i[0] == 'D') {std::string sub = i.substr(1);for (auto i : sub) {if (i < '0' || i > '9') isnum = false;}if (!isnum) continue;num = std::stoi(sub);if (num > 0 && num <= 99) {if (i[0] == 'A') x -= num;else if (i[0] == 'W') y += num;else if (i[0] == 'S') y -= num;else if (i[0] == 'D') x += num;}}}std::cout << x << ',' << y << std::endl;}

这篇关于HJ14 字符串排序HJ15 求int型正整数在内存中存储时1的个数HJ17 坐标移动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/847071

相关文章

SpringBoot3.X 整合 MinIO 存储原生方案

《SpringBoot3.X整合MinIO存储原生方案》本文详细介绍了SpringBoot3.X整合MinIO的原生方案,从环境搭建到核心功能实现,涵盖了文件上传、下载、删除等常用操作,并补充了... 目录SpringBoot3.X整合MinIO存储原生方案:从环境搭建到实战开发一、前言:为什么选择MinI

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

MySQL之InnoDB存储页的独立表空间解读

《MySQL之InnoDB存储页的独立表空间解读》:本文主要介绍MySQL之InnoDB存储页的独立表空间,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、独立表空间【1】表空间大小【2】区【3】组【4】段【5】区的类型【6】XDES Entry区结构【