字符串的左旋和判断一个字符串是否为另外一个字符串旋转之后的字符串。(C语言实现)

news2025/2/23 11:16:24

目录

1. 字符串的左旋

2. 判断一个字符串是否为另外一个字符串旋转之后的字符串


1. 字符串的左旋

题目:

实现一个函数,可以左旋字符串中的k个字符。

例如:

ABCD左旋一个字符得到BCDA

ABCD左旋两个字符得到CDAB

解析:该题有两种解决方法(我能想到的)。

  • 第一种:直接暴力解法

#include<stdio.h>
#include<string.h>
//第一个方法:暴力旋转,也就是枚举。
//a是传进来的数组首元素地址,k是要左旋的个数
void leftMoveStrOne(char* a, int k) {
	//先计算该数组有多长
	size_t len = strlen(a);
	//如果k是大于len,说明k旋转了一周或者n周,所以要取模
	k = k % len;
	for (int i = 0;i < k;i++) {
		//将第一个数组元素保存起来
		int tmp = a[0];
		size_t j = 0;
		//这里为什么需要len - 1呢,因为怕越界了
		//例如:有5个元素,下标最多到4,而j + 1可能会到5,所以越界了!
		for (j = 0;j < len - 1;j++) {
			a[j] = a[j + 1];
		}
		a[len - 1] = tmp;
	}
}

int main() {
	char str[]= "ABCDE";
	leftMoveArrOne(str, 2);
	printf("%s", str);
	return 0;
	/*char str[]= "ABCDE";
	leftMoveStrTow(str, 2);
	printf("%s", str);*/
	return 0;
}

 运行结果如下:

  •  第二种:三步翻转法,也叫三步逆序法。

//第二种方法:三步翻转法,也叫三步逆序法。
//先写一个逆序的方法
void reverse(char* left, char* right) {
	while (left < right) {
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}

void leftMoveStrTow(char* str, int k) {
	size_t len = strlen(str);
	k = k % len;
	reverse(str, str + k - 1);//第一次翻转
	reverse(str + k, str + len - 1);//第二次翻转
	reverse(str, str + len - 1);//第三次翻转
}

int main() {
	char str[]= "ABCDE";
	leftMoveStrTow(str, 2);
	printf("%s", str);
	return 0;
}

 运行结果如下: 

2. 判断一个字符串是否为另外一个字符串旋转之后的字符串

题目:

写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。

例如:给定s1 =AABCD和s2 = BCDAA,返回1

给定s1=abcd和s2=ACBD,返回0.

AABCD左旋一个字符得到ABCDA

AABCD左旋两个字符得到BCDAA

AABCD右旋一个字符得到DAABC

解析:该题有两种解决方法(我能想到的)。

  • 第一种:直接暴力解法

不断地左旋,得到一个新的字符,然后去判断两个字符串是不是相等!

//第一种方法:暴力破解法,枚举
//s1是要匹配的字符串,s2是去匹配s1的字符串
int isLeftMove(char* s1, char* s2) {
	size_t lens1 = strlen(s1);
	size_t lens2 = strlen(s2);
	if (lens1 != lens2) {
		return 0;
	}
	size_t i = 0;
	for (i = 0;i < lens1;i++) {
		char tmp = s2[0];
		size_t j = 0;
		for (j = 0;j < lens1 - 1;j++) {
			s2[j] = s2[j + 1];
		}
		s2[lens1 - 1] = tmp;
		if (strcmp(s1, s2) == 0) {
			return 1;
		}
	}
	return 0;
}

int main() {
	char s1[20] = "abcde";
	char s2[] = "bcdea";
	int flag = isLeftMove(s1, s2);
	printf("%d", flag);
	return 0;
}

 运行结果如下: 

  •  第二种:拼接比较法

//第二种方法:拼接比较法
int isLeftMovePlus(char* s1, char* s2) {
	size_t lens1 = strlen(s1);
	size_t lens2 = strlen(s2);
	if (lens1 != lens2)
		return 0;
	char* start = strncat(s1, s1, lens1);
	//用strstr()函数判断s2是不是s1的子串
	if (strstr(start, s2) == NULL)
		return 0;
	else
		return 1;
}

int main() {
	char s1[20] = "abcde";
	char s2[] = "bcdea";
	int flag = isLeftMove(s1, s2);
	printf("%d", flag);
	return 0;
}

  运行结果如下: 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1088276.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么把电影中的声音保存下来?

怎么把电影中的声音保存下来&#xff1f;当我们欣赏电影时&#xff0c;常常会遇到喜欢的片段、精彩的台词或优美的音乐。这时候&#xff0c;我们可能会有一个念头&#xff0c;希望能够将电影中的声音留存下来&#xff0c;以供将其作为手机铃声或背景音乐使用。 要实现这个目标&…

盘点:数字人直播系统源码部署哪家好?

数字人直播克隆系统是一种利用人工智能技术&#xff0c;将真实人物的形象、声音、表情、动作等特征转化为数字化的虚拟人物&#xff0c;通过网络进行实时互动的新型媒体形式。数字人直播克隆系统源码部署是指将数字人直播系统的核心代码和模型安装在自己的服务器上&#xff0c;…

【OAuth】OAuth2.0四种授权模式

什么是OAuth&#xff1f; 开放授权&#xff08;OAuth&#xff09;是一个开放标准&#xff0c;允许用户让第三方应用访问该用户在某一网站上存储私密的资源&#xff08;如照片&#xff0c;视频&#xff0c;联系人列表&#xff09;&#xff0c;而无需将用户名和密码提供给第三方…

和为 K 的子数组

题目链接 和为 K 的子数组 题目描述 注意点 -1000 < nums[i] < 1000子数组是数组中元素的连续非空序列 解答思路 最初想到的思路是使用递归&#xff0c;遍历整个数组&#xff0c;当访问到idx位置处的元素时&#xff0c;可以根据idx - 1作为末尾元素的子数组和推出id…

SAP router的问题 dev_out 大文件 ,bat 关闭服务,删除文件,重启服务

跟老师确认后&#xff0c;dev_out可以删除 具体时先把sap-router停掉&#xff0c;删除dev_out 重启服务 问题&#xff1a; 1、问题是saprouter 不能停止&#xff0c;停止的话 外网都要用VPN&#xff0c;那就避开高峰时间 可以后半夜搞这个事情 2、如何定时执行 &#xff…

C++的高手之旅

要学习C并成为C大佬&#xff0c;以下是一些建议&#xff1a; 掌握C基础知识&#xff1a;C是一种面向对象的编程语言&#xff0c;它包含了C语言的大部分语法和特性。因此&#xff0c;学习C之前&#xff0c;建议先掌握C语言的基础知识&#xff0c;包括数据类型、控制流、指针、内…

详解cv2.copyMakeBorder函数【OpenCV图像边界填充Python版本】

文章目录 简介函数原型代码示例参考资料 简介 做深度学习图像数据集时&#xff0c;有时候需要调整一张图片的长和宽。如果直接使用cv2.resize函数会造成图像扭曲失真&#xff0c;因此我们可以采取填充图像短边的方法解决这个问题。cv2.copyMakeBorder函数提供了相关操作。本篇…

[Machine Learning][Part 5]监督学习——逻辑回归

之前文章中提到监督学习的应用可分为两类&#xff1a;线性回归和逻辑回归。和线性回归不同&#xff0c;逻辑回归输出只有0和1。对于一个逻辑回归任务&#xff0c;可以先使用线性回归来预测y。然而我们希望逻辑回归预测模型输出的是0和1&#xff0c;为了达到这个目的&#xff0c…

javascript将html中的dom元素转图片

javascript将html中的dom元素转图片 百度网盘下载html2canvas.min.js&#xff1a; 全部文件-》js插件-》 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>网页中的某个区域转图片</title></head><body styl…

精准突击!GitHub星标103k,2023年整理1658页JAVA秋招面试题

前言&#xff1a; 现在的互联网开发岗招聘&#xff0c;程序员面试背八股文已经成为了不可逆转的形式&#xff0c;其中一个Java岗几百人在投简历也已经成为了常态&#xff01;更何况一份面试题动辄七八百道&#xff0c;你吃透了&#xff0c;技术只要不是很差&#xff0c;面试怎…

易点易动采购管理模块:实现全生命周期管理,助力企业采购管理的高效运作

在现代企业中&#xff0c;采购管理是一个关键的业务环节。然而&#xff0c;许多企业面临着采购流程繁琐、信息不透明、成本控制困难等问题&#xff0c;导致采购效率低下和资源浪费。为了解决这些问题&#xff0c;易点易动采购管理模块应运而生。本文将详细介绍易点易动采购管理…

PIL Image格式转Tensor

Image格式是由PIL库读入的图片格式 from PIL import Image torch.Tensor是用于深度学习计算的张量格式 import torch 1 Image格式转Tensor 先转numpy 再转tensor torch.from_numpy() np.asarray() image torch.from_numpy(np.asarray(image)) 但是报错: max_pool2d” not im…

PostGIS导入shp文件报错:dbf file (.dbf) can not be opened.

一、报错 刚开始以为是SRID输入错误&#xff0c;反复尝试SRID的输入&#xff0c;还是报错&#xff01; 后来看到了这篇博客&#xff0c;解决了&#xff01;https://blog.csdn.net/Fama_Q/article/details/117381378 二、导致报错的原因 导入的shp文件路径太深&#xff0c;换…

Maven系列第6篇:生命周期和插件详解?

maven系列目标&#xff1a;从入门开始开始掌握一个高级开发所需要的maven技能。 这是maven系列第6篇。 整个maven系列的内容前后是有依赖的&#xff0c;如果之前没有接触过maven&#xff0c;建议从第一篇看起&#xff0c;本文尾部有maven完整系列的连接。 前面我们使用maven…

AI 生成的唯美头像也太好看了吧!附好说 AI 一秒出图技巧

在注重线上社交的当下&#xff0c;拥有不一样的头像是提高个人辨识度的好方法。比起网上找图和人 “撞头像”&#xff0c;如今免费的 AI 生图或许是更多人的 “最优解”。 这里我们参考好说社区大家的作品&#xff0c;提炼了一些 AI 作图要点分享给大家。我们的目标很简单&…

200、使用默认 Exchange 实现 P2P 消息 之 消息生产者(发送消息) 和 消息消费者(消费消息)

RabbitMQ 工作机制图&#xff1a; Connection&#xff1a; 代表客户端&#xff08;包括消息生产者和消费者&#xff09;与RabbitMQ之间的连接。 Channel&#xff1a; 连接内部的Channel。channel&#xff1a;通道 Exchange&#xff1a; 充当消息交换机的组件。 Queue&#xff…

Leetcode---365周赛

题目列表 2873. 有序三元组中的最大值 I 2874. 有序三元组中的最大值 II 2875. 无限数组的最短子数组 2876. 有向图访问计数 一、有序三元组中的最大值I 看一眼该题的数据范围&#xff0c;直接三层for循环暴力枚举&#xff0c;时间复杂度O(n^3)&#xff0c;代码如下 class…

Avalonia常用小控件Svg

1.项目下载地址&#xff1a;https://gitee.com/confusedkitten/avalonia-demo 2.UI库Semi.Avalonia&#xff0c;项目地址 https://github.com/irihitech/Semi.Avalonia 3.SVG库&#xff0c;Avalonia.Svg.Skia&#xff0c;项目地址 https://github.com/wieslawsoltes/Svg.Ski…

淘宝店铺商品评论数据采集,淘宝商品评论数据接口,淘宝API接口

采集淘宝店铺商品评论数据的方法如下&#xff1a; 进入主界面&#xff0c;选择"自定义任务"。将商品信息页的网址复制粘贴到网站输入框中&#xff0c;点击"保存设置"。将页面下拉到底部&#xff0c;点击"下一页"按钮&#xff0c;在右侧的操作提…

IDEA 中SpringBoot对Run/Debug Configurations配置 SpringBoot的多环境参数指定

例如下面中有多种环境&#xff1a;dev、test、prod 等配置参数&#xff0c;运行服务时候指定其中一种 VM options:内部配置参数 -Dspring.config.namebootstrap -Dspring.spring.profilesdev # 也可以指定端口 -Dserver.port8080 -Dspring.profiles.activetest -Ddebug 参考链…