字符的左旋
来源:互联网 发布:网络风暴检测工具 编辑:程序博客网 时间:2024/04/30 13:59
1. 实现一个函数,可以左旋字符串中的k个字符。
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
方法1:常规做法,将每个左移
#include "stdio.h"
void left_move(char *arr,int len,int count)
{
count %= len;//有效的左旋次数
int i = 0;
while (count--)//左旋的次数
{
char tmp = arr[0];//将第一个取出
for (i = 0; i < len-1; i++)//左旋一次
{
arr[i] = arr[i + 1];
}
arr[i] = tmp;//将取出的第一个放至最后
}
}
int main()
{
char arr[] = "abcd";
int sz = sizeof(arr)/sizeof(arr[0]);//大小为5
int count = 0;
printf("左旋之前:%s\n", arr);
printf("请输入左旋的字符个数:\n");
scanf_s("%d", &count);
left_move(arr, sz-1,count);
printf("左旋之后:%s\n", arr);
system("pause");
return 0;
}
方法2:部分逆序后再整体逆序
void reverse(char *start ,char*end)
{
while (start <end)
{
*start ^= *end;
*end ^= *start;
*start ^= *end;
start++;
end--;
}
}
void left_move(char *arr,int len,int count)
{
count %= len;//有效的左旋次数,假设左旋两次
reverse(arr, arr + count-1);//逆置前半部分 ab -》 ba
reverse(arr + count, arr + len - 1);//逆置后半部分 cd-》dc
reverse(arr, arr + len - 1);//整体逆置 ->cdab
}
2.判断一个字符串是否为另外一个字符串旋转之后的字符串。
例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.
AABCD左旋一个字符得到ABCDA
AABCD左旋两个字符得到BCDAA
AABCD右旋一个字符得到DAABC
#include "stdio.h"
#include "assert.h"
#include "string.h"
int is_not(char *p,char*q)
{
assert(p !=NULL&&q !=NULL);//传入指针不能为空
strcat(p, p, strlen(p));//连接两个字符串的函数
if (strstr(p,q) == NULL)//子字符串比较的函数
{
return -1;
}
else{
return 1;
}
}
int main()
{
int ret = 0;
char arr1[] = "abcd";
char arr2[] = "dabc";
ret = is_not(arr1, arr2);
if (ret == 1)
{
printf("是");
}
if (ret == -1)
{
printf("不是");
}
system("pause");
return 0;
}
- 字符的左旋
- 字符左旋函数
- 左旋字符
- 左旋字符串k个字符
- 左旋字符串中的k个字符
- 实现一个函数,可以左旋字符串中的k个字符(不同复杂度的算法)
- 左旋字符串K个字符的3种实现方法
- 左旋一个字符串中k个字符的三种方法
- 把一个字符串左旋k个字符的2种方法
- 将一个字符串的前n个字符旋转到后面,采用左旋,或者右旋。
- 左移字符
- 左旋转字符窜
- .实现一个函数,可以左旋字符串中的k个字符。 AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA
- 实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB
- //3.实现一个函数,可以左旋字符串中的k个字符。 //ABCD左旋一个字符得到BCDA //ABCD左旋两个字符得到CDAB
- 实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB
- 实现一个函数,可以左旋字符串中的k个字符。 AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA
- 实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB
- 阿里Java开发手册(自我总结版一)
- Material-Animations(三)--Animate view layout elements
- 神奇的闭包
- 爬取百度百科上有关妇产科的语料
- 机器学习基石-09-3-Generalization Issue
- 字符的左旋
- jndi:报错由于连接路径为null,不能创建驱动
- 74. Search a 2D Matrix
- 白话普及serverless架构
- 设计模式之单例模式
- Error creating bean with name 'handlerMapping'
- 何为指针(四)指针,解引用和左值
- ConcurrentHashMap核心方法个人理解 jdk1.8
- Docker 使用指南 (五)—— Dockerfile 详解