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

相关文章

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

MySQL更新某个字段拼接固定字符串的实现

《MySQL更新某个字段拼接固定字符串的实现》在MySQL中,我们经常需要对数据库中的某个字段进行更新操作,本文就来介绍一下MySQL更新某个字段拼接固定字符串的实现,感兴趣的可以了解一下... 目录1. 查看字段当前值2. 更新字段拼接固定字符串3. 验证更新结果mysql更新某个字段拼接固定字符串 -

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

Mybatis 传参与排序模糊查询功能实现

《Mybatis传参与排序模糊查询功能实现》:本文主要介绍Mybatis传参与排序模糊查询功能实现,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、#{ }和${ }传参的区别二、排序三、like查询四、数据库连接池五、mysql 开发企业规范一、#{ }和${ }传参的

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处