旋转字符串,判断字符串是否为旋转而来

article/2025/10/8 4:28:23

题目

1、实现一个函数,可以左旋字符串中的k个字符。
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
2、.判断一个字符串是否为另外一个字符串旋转之后的字符串。
例如:
给定s1 = AABCD和s2 = BCDAA,返回1
给定s1 = abcd 和 s2 = ACBD,返回0
AABCD左旋一个字符得到ABCDA
AABCD左旋两个字符得到BCDAA
AABCD右旋一个字符得到DAABC

思路

1、所有的左旋右旋都可以看作是左旋,右旋k个相当于左旋size - k个(size是字符串长度)。先存不旋转的后半部分至一个空数组,再存前半部分的旋转部分

jo-qzy的博客

2、。看图吧

jo-qzy的博客

代码

你可以前往我的github下载此代码

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>char * RotateString(char *arr, int num, int size);
int CheckString(char *arr1, char *arr2, int size1, int size2);
int CheckCycle(char *p, char *q);int main()
{char arr1[] = "ABCDEFG";char arr2[] = "CDEFGAB";int num = 5;int size1 = sizeof(arr1);int size2 = sizeof(arr1);printf("%s\n", RotateString(arr1, num, size1));//输出旋转之后的字符串printf("%d\n", CheckString(arr1, arr2, size1, size2));//返回是否是旋转的字符串,是为1,不是为0system("pause");return 0;
}char * RotateString(char *arr, int num, int size)
{char * p = (char*)malloc(sizeof(char)*size);//分配n个空间供旋转后数组存储char * head = p;//头指针,保存头int i = 0;for (i = num; i < size-1; i++){*p++ = *(arr + i);//不旋转部分的CD先存入p}for (i = 0; i < num; i++){*p++ = *(arr + i);//旋转部分AB存入数组p}*p = '\0';//最后给个\0结束数组return head;
}int CheckString(char *arr1, char *arr2, int size1, int size2)
{char *p = arr1;//p指向arr1,q指向arr2char *q = arr2;while (*q != '\0'){if (*p == *q){if (CheckCycle(p, q))//判断是否旋转,若旋转返回1{return 1;}}q++;}return 0;//若运行至此处,说明没有匹配旋转的字符串,返回0
}int CheckCycle(char *p, char *q)
{while (*q != '\0'){if (*p != *q)//不等直接返回0,相等继续判断直到q指向最后一个字符{return 0;}p++;q++;}return 1;
}

http://chatgpt.dhexx.cn/article/RRGl9rC1.shtml

相关文章

旋转字符串(java)

问题描述: 给定两个字符串, s 和 goal。如果在若干次旋转操作之后&#xff0c;s 能变成 goal &#xff0c;那么返回 true 。s 的 旋转操作 就是将 s 最左边的字符移动到最右边。 若 s ‘abcde’&#xff0c;在旋转一次之后结果就是’bcdea’ 。 样例输入&#xff1a; 代码如下…

2021-02-12:如何判断两个字符串是否互为旋转字符串?

2021-02-12&#xff1a;如何判断两个字符串是否互为旋转字符串&#xff1f; 福哥答案2021-02-12&#xff1a; 假设字符串str1是“ABCDE”&#xff0c;字符串str2是“CDEAB”。字符串str2可以拆分成“CDE”和“AB”&#xff0c;可以拼成“ABCDE”。所以str1和str2互为旋转字符…

字符串旋转问题详解

题目名称&#xff1a; 字符串左旋 题目内容&#xff1a; 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 方法一&#xff1a;暴力求解 这种方法相对比较容易&#xff0c;我们先来看看代码&…

Python——旋转字符串

题目描述 给定两个字符串s和goal&#xff0c;如果在若干次旋转操作后s能够变成goal&#xff0c;那么就返回True s的旋转操作就是把s最左面的字符放到最右面 例如&#xff1a; s ‘abcde’ 旋转一次就是‘bceda’ 而如果goal是bceda&#xff0c;那么goal就是s的旋转字符串 P…

【旋转字符串的四种方法】

目录&#xff1a; 前言一、题目描述二、题目解析&#xff08;一&#xff09;依次左旋&#xff08;二&#xff09;创建中间数组&#xff08;三&#xff09;三次倒置&#xff08;四&#xff09;接长数组 总结 前言 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 旋转字符…

Android 实时监听APP进入前台或后台

下面已更新说明 前言 在我们开发的过程中&#xff0c;经常会遇到需要我们判断app进入后台&#xff0c;或者切换到前台的情况。比如我们想判断app切换到前台时&#xff0c;显示一个解锁界面&#xff0c;要求用户输入解锁密码才能继续进行操作&#xff1b;我们想判断app切换到后…

什么是后台

什么是后台&#xff1f; 后台指的是运行在后台并且控制着前端的内容&#xff0c;它主要负责程序设计架构思想&#xff0c;管理数据库等。后台更多的是应用到数据库并且进行交互以处理相应的业务逻辑。它需要考虑的是如何实现功能、数据的存取、平台的稳定性与性能等方面。需要参…

Android后台应用开启前台服务---android8到android12梳理

以下内容都是针对start方式启动的service&#xff0c;而非bind启动的srevice。因为bind启动的服务生命周期始于Activity绑定在一起的&#xff0c;会随Activity的销毁而停止。但start方式启动的service独立的&#xff0c;即使应用销毁它也可以继续运行&#xff0c;故Android系统…

关闭后台App刷新后台应用刷新是做什么的

官方解释 “后台应用刷新” 是什么作用&#xff08;如图&#xff09; 关闭后台应用刷新&#xff0c;并不会影响到消息接收&#xff08;因为消息接收是通过Apple Push Notification机制来的&#xff09;省电模式默认全部应用都关闭刷新&#xff08;说明关闭可以省电&#xff09…

Android——后台服务

Android应用编程实验 实验名称&#xff1a;Android 后台服务 实验目的&#xff1a;通过Service设计后台服务程序&#xff0c;通过Broadcast实现信息广播机制 实验内容&#xff1a; 设计一个简单的后台音乐服务程序&#xff1b;设计一个简单的信息广播程序示例&#xff1b;利用B…

Android应用后台网络管控机制

应用后台网络管控机制 概述 在维护手管应用时&#xff0c;经常遇到与应用后台网络控制相关的问题&#xff0c;在解决这些问题的过程中&#xff0c;学习了下应用后台网络控制的流程以及一些日志的分析方法&#xff0c;现在把它总结一下&#xff0c;方便自己以及他人的学习。 网…

Android将后台应用唤起到前台的方法

在我们开发的过程中&#xff0c;经常遇到app进入后台&#xff0c;或者切换到前台的情况。 比如&#xff1a; 从后台切换到前台显示全屏广告实践来电显示从后台切换到前台 如图显示&#xff1a;压后台10秒钟&#xff0c;自动弹出 实现主要分为两个步骤&#xff1a; 第一步通…

后台功能

#&#x1f30c; 后台功能 后台功能模块&#xff0c;包含主控面板&#xff0c;开发管理&#xff0c;日志管理&#xff0c;系统监控&#xff0c;通知公告&#xff0c;文件管理&#xff0c;定时任务。 #1. 主控面饭 主控面板展示了系统的一些统计信息&#xff0c;采用默认的ant…

如何让应用保持后台运行,做到保活?

其实&#xff0c;我们无法做到真正意义上的保活&#xff0c;应为系统进程会自动杀死占用过大内存的某个应用。 但我们还有一种选择&#xff0c;就是过滤该应用的包名&#xff0c;做到后台任务键清理不掉它&#xff0c;单独去除不掉它&#xff0c;只有返回键才能做到真正的退出…

【已解决】Android 如何让应用在后台运行

应用在后台跑&#xff0c;这种说法可能不够准确&#xff0c;就是说应用没有finish退出&#xff0c;但也不在前台的状态&#xff0c;例如应用执行中点击了home键一样。如何实现呢&#xff1f; 要点&#xff1a; 退回后台是执行了home键&#xff0c;activity分别执行了onPause和…

如何让安卓APP一直在后台运行?

本文摘自微信公众号“android高心星的私塾” 一 声明 1 网上很多的保活手段&#xff0c;但是不靠谱的居多 2 本文只是进行保活知识的推广&#xff0c;不是在教你做永生不死的进程 二 保活手段 1 业界保活手段&#xff1a;黑色保活&#xff0c;灰色保活&#xff0c;白色保活 2…

Android | 判断App处于前台还是后台的方案

很多场景下&#xff0c;都需要判断某个App处于前台还是后台。本文集网上编写的前台判断方案于一体。 目前&#xff0c;有6种方案&#xff1a; 方 法 判断原理需要权限可以判断其他应用位于前台特点①RunningTask否Andorid4.0系列可以&#xff0c;5.0以上机器不行Android5.0此方…

fastapi_No.18_后台应用

文章目录 简介使用场景 创建后台应用步骤第一步&#xff1a;定义后台应用函数第二步&#xff1a;使用后台应用函数 在依赖项中的后台应用示例代码示例代码说明 简介 后台应用就是在发送响应后运行的函数。通常用在请求后需要耗费较长时间处理&#xff0c;且客户端不需要在接收…

win11如何禁用后台应用权限 Windows11禁用后台应用权限的设置方法

我在使用Win11系统的电脑时经常会遇到自动打开应用程序情况&#xff0c;很多小伙伴都不知道到如何关闭&#xff0c;那么遇到这种情况应该要如何解决呢?下面就和小编一起来看看Win11系统要如何去禁用软件的后台权限吧。更多windows11系统教程&#xff0c;可以参考小白一键重装网…

提高软件CPU占用率

案例&#xff1a; 独立线程以5ms一包的速率接收指令&#xff08;一共大概70-80种指令类型&#xff09;&#xff0c;并放入一个队列A 主线程中&#xff0c;根据定时器去队列A中取数据&#xff0c;并解析/计算/显示&#xff08;速率&#xff1a;200包/秒&#xff09; 现象&…