字符串左旋 与 字符串旋转结果
字符串左旋
实现一个函数,可以左旋字符串中的k个字符。
例如:
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
方法1
三步翻转法
要求:abcdef 左旋两个
- 整体逆序:fedcba
- 左边逆序:cdef ba
- 右边逆序:cdef ab
#include<stdio.h>
#include<string.h>
#include<assert.h>
void reverse(char* left, char* right)
{assert(left);assert(right);while (left < right){char tmp = *left;*left = *right;*right = tmp;left++;right--;}
}
void left_move(char* arr, int k)
{assert(arr);int len = strlen(arr);k %= len;reverse(arr, arr + len - 1);//逆序整体reverse(arr, arr + len - k - 1);//逆序左边reverse(arr + len - k, arr + len - 1);//逆序右边
}
int main()
{char arr[] = "abcdef";left_move(arr, 2);printf("%s\n", arr);return 0;
}
方法2
- 将第一个元素放到临时变量
- 后面元素前移一位
- 然后把临时变量的值放到最后
- 循环
#include<stdio.h>
#include<string.h>
#include<assert.h>
void left_move(char* arr, int k)
{assert(arr);size_t len = strlen(arr);k %= len;while (k--){char tmp = *arr;size_t i = 0;for (i = 0; i < len - 1; i++){arr[i] = arr[i + 1];}arr[len - 1] = tmp;}
}
int main()
{char arr[] = "abcdef";left_move(arr, 2);printf("%s\n", arr);return 0;
}
字符串旋转结果
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。
例如:
给定s1 =AABCD和s2 = BCDAA,返回1
给定s1=abcd和s2=ACBD,返回0.
AABCD左旋一个字符得到ABCDA
AABCD左旋两个字符得到BCDAA
AABCD右旋一个字符得到DAABC
方法1(穷举)
#include<stdio.h>
#include<string.h>
#include<assert.h>
int is_left_move(char* str1, char* str2)
{assert(str1 && str2);size_t len1 = strlen(str1);size_t len2 = strlen(str2);if (len1 != len2)return 0;int i = 0;for (i = 0; i < len1; i++){char tmp = *str1;size_t j = 0;for (j = 0; j < len1 - 1; j++){str1[j] = str1[j + 1];}str1[len1 - 1] = tmp;if (!strcmp(str1, str2))return 1;}return 0;
}
int main()
{char str1[] = "abcdef";char str2[] = "bcdefa";if (is_left_move(str1, str2))printf("yes");elseprintf("no");return 0;
}
方法2
在原字符串后面追加一个相同的字符串
旋转字符串是这个大的字符串的子字符串
#include<stdio.h>
#include<string.h>
#include<assert.h>
int is_left_move(char* str1, char* str2)
{assert(str1&&str2);int len1 = strlen(str1);int len2 = strlen(str2);if (len1 != len2)return 0;strncat(str1, str1, len1);if (strstr(str1, str2) == NULL)return 0;elsereturn 1;
}
int main()
{char arr1[30] = "abcdef";char arr2[] = "cdefab";if (is_left_move(arr1, arr2))printf("yes\n");elseprintf("no\n");return 0;
}
相关文章:
字符串左旋 与 字符串旋转结果
字符串左旋 实现一个函数,可以左旋字符串中的k个字符。 例如: ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 方法1 三步翻转法 要求:abcdef 左旋两个 整体逆序:fedcba左边逆序:cdef ba右边逆序:cdef ab #include<stdio.h> #include<…...
真人现在猫鼠躲猫猫游戏搭建流程:专业思考与深度思考
真人现在猫鼠躲猫猫游戏是种充满乐趣和挑战的团队竞技游戏。本文将从游戏规则设计、场地布置、技术实现和用户体验等方面,深入探讨人现在猫鼠躲猫猫游戏的搭建流程,并结合专业思考与深度思考,为游戏搭建提供全面指导。 一、游戏规则设计&…...
计算机导论实验——Linux基础入门
使用Xshell登录 Linux 主机 linux命令: cd:去哪里 pwd:在哪里 ls:查看当前有什么文件 mkdir:创建新目录 cp:复制 cat:连接或显示文件 rm:删除 mv:用于移动或重命名文件…...
服务运营 |摘要:学术+业界-近期前沿运筹医疗合作精选
推文作者:李舒湉 编者按 本文归纳整理了近期INFORMS Journal on Applied Analytics中的相关业界合作研究。 这些研究成果体现了运筹学在医疗健康领域实践的效果。文中的学术业界合作使用了不同的研究工具。第一篇文章使用仿真模型帮助诊所进行不同拥挤程度下诊所使用…...
基于Dockerfile创建镜像
基于现有镜像创建 1.首先启动一个镜像,在容器里做修改 docker create -it centos:7 /bin/bash #常用选项: -m 说明信息; -a 作者信息; -p 生成过程中停止容器的运行。 2.然后将修改后的容器提交为新的镜像,需要使用…...
架构实战关键知识点
1.维基百科的“系统”定义:https://zh.wikipedia.org/wiki/%E7%B3%BB%E7%B5%B1 2.维基百科的“软件模块”定义:https://zh.wikipedia.org/wiki/%E8%BB%9F%E9%AB%9 4%E6%A8%A1%E7%B5%84 3.维基百科的“软件组件”定义:https://zh.wikipedia.or…...
M1Mac开启x86_64命令行archlinux虚拟机的最佳实践(qemu)
categories: [Tips] tags: Linux MacOS 写在前面 UTM 虚拟机可以卸载了, 命令行才是永远滴神, M1 MacBook Air 又能再战了! 之前一直用 UTM 的虚拟化开启 x86_64 的 Linux 虚拟机的, 但是我发现 UTM 好像不是必须的, 只要有qemu 就可以了, 下面就看看如何不通过图形界面前端…...
深度神经网络压缩与加速技术
// 深度神经网络是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。深度神经网络是一…...
系统架构设计:11 论湖仓一体架构及其应用
目录 一 湖仓一体(Lakehouse) 1 数据仓库 2 数据湖 3 数据仓库和数据湖 4 湖仓一体(Lakehouse)...
Linux系统编程_文件编程第1天:打开、写入、读取、关闭文件等编程
1. 文件编程概述(399.1) 内容超多: 文件系统原理及访问机制文件在内核中的管理机制什么是文件信息节点inode文件的共享文件权限,各种用户对其权限。。。。。。 应用为王,如: 账单游戏进度配置文件等 关心如…...
scapy构造ND报文
控制报文之:找邻居报文 什么是ND报文 ND报文是指网络中的 Neighbor Discovery(ND)控制报文。Neighbor Discovery 是 IPv6 网络中的一种协议,它用于管理网络节点之间的邻居关系、地址解析、路由缓存维护和自动配置等任务。ND 协议…...
c++设计模式之单例设计模式
💂 个人主页:[pp不会算法v](https://blog.csdn.net/weixin_73548574?spm1011.2415.3001.5343) 🤟 版权: 本文由【pp不会算法^v^】原创、在CSDN首发、需要转载请联系博主 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦…...
App自动化测试环境搭建
目录 1、java jdk安装 2、node.js安装 3、安装模拟器安装 4、Android SDK 安装 5、Appium-Server安装 6、appium客户端安装 7、Appium-Python-Client安装 只做记录和注意点,详细内容不做解释 环境:winappium夜神模拟器python 需要用到的工具&a…...
win10搭建gtest测试环境+vs2019
首先是下载gtest,这个我已经放在了博客上方资源绑定处,这个适用于win10vs版本,关于liunx版本的不能用这个。 或者百度网盘链接: 链接:https://pan.baidu.com/s/15m62KAJ29vNe1mrmAcmehA 提取码:vfxz 下…...
【代码随想录】算法训练营 第二天 第一章 数组 Part 2
977. 有序数组的平方 题目 暴力解法 思路 原地更新所有数组元素为其平方数后,再使用sort函数排序,对vector使用sort函数时,两个参数分别是vector的起始元素和终止元素。 代码 class Solution { public:vector<int> sortedSquares(…...
在深度学习中,累计不同批次的损失估计总体损失
在深度学习中,累计不同批次的损失估计总体损失 在深度学习训练模型的过程中,通常会通过计算不同批次间的损失和,当作模型在这个训练集上的总体损失,这种做法是否具有可行性呢? 什么是总体损失? 总体损失是计算模型在…...
论文导读|八月下旬Operations Research文章精选:定价问题专题
编者按: 在“ Operations Research论文精选”中,我们有主题、有针对性地选择了Operations Research中一些有趣的文章,不仅对文章的内容进行了概括与点评,而且也对文章的结构进行了梳理,旨在激发广大读者的阅读兴…...
(三)Apache log4net™ 手册 -演示
0、引言 在开始本文之前,推荐您首先阅读 Apache log4net™ 手册中有关 介绍 与 配置 的相关内容。本文将通过实践分别为您演示如何使用 Visual Studio 2022 在 .NET Framework 项目和 .NET 项目下配置并使用 Log4Net。 1、为 .NET Framework 项目配置 Log4Net 1.1…...
VScode远程root权限调试
尝试诸多办法无法解决的情况下,允许远程登陆用户直接以root身份登录 编辑sshd_config文件 sudo vim /etc/ssh/sshd_config 激活配置 注释掉PermitRootLogin without-password,即#PermitRootLogin without-password 增加一行:PermitRootLo…...
【ARM CoreLink 系列 7 -- TZC-400控制器简介】
文章目录 背景介绍1.1 TZC-400 简介1.2 TZC-400 使用示例1.3 TZC-400 interfaces1.3.1 FPID1.3.2 NSAID Regionregion 检查规则 1.4 Features1.5 Register summary1.6 TZC-400和TZPC和TZASC区别 背景介绍 为了确保内存能够正确识别总线的信号控制位,新增一个TrustZ…...
从汽车电子到工业控制:手把手教你用STM32CubeMX和HAL库玩转CAN总线多节点通信
从零构建工业级CAN总线通信系统:基于STM32CubeMX的实战指南 1. CAN总线技术基础与工业应用场景 在现代工业控制系统中,CAN总线因其高可靠性和实时性已成为设备间通信的事实标准。不同于普通串行通信,CAN采用差分信号传输和先进的错误检测机…...
抖音去水印下载器终极指南:批量保存视频、音乐、图集和直播
抖音去水印下载器终极指南:批量保存视频、音乐、图集和直播 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback …...
别再乱调了!Unity Shader中ZWrite的‘开’与‘关’,一份给程序员的避坑实践指南
Unity Shader深度写入实战:ZWrite的正确打开方式 1. 深度写入的底层逻辑 在计算机图形学中,深度缓冲(Depth Buffer)是一个至关重要的概念。它本质上是一个二维数组,存储了每个像素距离摄像机的深度值。当Unity渲染场景…...
从混乱到清晰:用Nacos用户权限管理,为微服务团队划清‘责任田’
从混乱到清晰:用Nacos用户权限管理为微服务团队划清‘责任田’ 在数字化转型浪潮中,中大型企业往往面临微服务架构下的协作困境。想象一个典型场景:电商促销季来临,支付团队紧急调整流水线配置时,却意外覆盖了用户中心…...
别再只用if-else了!Matlab里switch/case的5个高效用法与避坑指南
别再只用if-else了!Matlab里switch/case的5个高效用法与避坑指南 在Matlab编程中,if-else语句几乎是每个开发者最先掌握的控制结构之一。但当你开始处理更复杂的条件逻辑时,一长串的if-elseif-else语句不仅让代码变得难以阅读,还可…...
什么制造业电子数据交换(EDI)软件?|应用现状以及发展趋势
一、什么是电子数据交换(EDI)软件电子数据交换(EDI),是制造企业之间按照行业标准,自动完成业务数据传输的数字化工具。EDI软件能够将订单、预测、发货、发票、物料主数据等信息,在企业ERP、MES、…...
Armv9内存拷贝指令优化与性能调优
1. Arm架构内存拷贝指令深度解析在Armv9架构中,内存拷贝操作通过FEAT_MOPS(Memory Operations)特性得到显著增强。这套指令集专为高效内存操作设计,其中CPYFP/CPYFM/CPYFE系列指令实现了分阶段的内存拷贝机制。与传统的循环拷贝相比,这种设计…...
职场新人不会写自我介绍?3分钟AI生成直接拿面试
刚步入职场的新人,写简历是不是最怕碰到“自我评价”或“自我介绍”这一栏?盯着空白屏幕憋了一下午,最后只能干巴巴地敲下“性格开朗、吃苦耐劳、具有团队合作精神”这种假大空的话。好不容易搞定简历投递出去,结果总是石沉大海&a…...
LinkSwift:终极免费网盘直链下载助手完整使用指南
LinkSwift:终极免费网盘直链下载助手完整使用指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘…...
FPGA+DDR3+千兆以太网:构建实时高清图像传输与显示系统(附源码)
1. 实时高清图像传输系统的核心价值 想象一下这样的场景:医疗内窥镜手术中,医生需要实时查看1080p高清影像;工业检测线上,高速摄像头每秒产生数百帧4K画面;无人机航拍时,需要将拍摄的高清视频实时回传到地面…...
