#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<assert.h>
//实现一个函数,可以左旋字符串中的k个字符
//例如:
//ABCD左旋一个字符得到BCDA
//ABCD左旋两个字符得到CDAB
//void left_move(char arr[], int k)
//{
//
//}
//暴力求解法
//void left_move(char* arr, int k)
//{
// assert(arr);
// int i = 0;
// int len = strlen(arr);
// for (i = 0; i < k; i++)
// {
// //左旋转一个字符
// //1
// char tmp = *arr;
// //2
// int j = 0;
// for (j = 0; j < len-1; j++)
// {
// *(arr + j) = *(arr + j + 1);
// }
// //3
// *(arr + len - 1) = tmp;
// }
//}
//2.三步翻转法
//ab cdef
//ba fedc
//cdefab
//逆序字符串的函数
//void reverse(char* left,char* right)
//{
// assert(left != NULL);
// assert(right != NULL);
// 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);
// assert(k <= len);
// reverse(arr,arr+k-1);//逆序左边
// reverse(arr+k,arr+len-1);//逆序右边
// reverse(arr,arr+len-1);//逆序整体
//}
//int main()
//{
// char arr[] = "abcdef";
// left_move(arr, 4);
// printf("%s\n", arr);
// return 0;
//}
//abcdef
//bcdefa
//cdefab
//defabc
//efabcd
//fabcde
//int is_left_move(char* s1, char* s2)
//{
// int len = strlen(s1);
// int i = 0;
// for (i = 0; i < len; i++)
// {
// left_move(s1, 1);
// int ret = strcmp(s1, s2);
// if (ret == 0)
// return 1;
// }
// //
// return 0;
//}
//abcdefabcdef
//int is_left_move(char* str1, char* str2)
//{
// int len1 = strlen(str1);
// int len2 = strlen(str2);
// if (len1 != len2)
// {
// return 0;
// }
// //1. str1字符串中追加一个shr1字符串
// //2. 判断str2指向的字符串是否是str1指向的字符串的字串
// //strcat(str1, str1);//error
// strncat(str1, str1, 6);
// //strstr - 找字串的
// char* ret = strstr(str1, str2);
// if (ret == NULL)
// {
// return 0;
// }
// else
// {
// return 1;
// }
//}
//int main()
//{
// char arr1[30] = "abcdef";
// char arr2[] = "cdef";
// int ret = is_left_move(arr1,arr2);
// if (ret == 1)
// {
// printf("Yes\n");
// }
// else
// printf("No\n");
// return 0;
//}
//杨氏矩阵
//有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在
//要求:时间复杂度<0(N);
//int FindNum(int arr[3][3], int k, int row, int col)
//{
// int x = 0;
// int y = col - 1;
// while (x<=row-1 && y>=0)
// {
// if (arr[x][y] > k)
// {
// y--;
// }
// else if (arr[x][y] < k)
// {
// x++;
// }
// else
// {
// return 1;
// }
// }
// return 0;
//}
//int FindNum(int arr[3][3], int k, int* px, int* py)
//{
// int x = 0;
// int y = *py - 1;
// while (x<=*px-1 && y>=0)
// {
// if (arr[x][y] > k)
// {
// y--;
// }
// else if (arr[x][y] < k)
// {
// x++;
// }
// else
// {
// *px = x;
// *py = y;
// return 1;
// }
// }
// //找不到
// return 0;
//}
//
//int main()
//{
// int arr[3][3] = { {1,2,3},{4,5,6},{7,8,9} };
// int k = 0;
// int x = 3;
// int y = 3;
// scanf("%d", &k);
// //返回型参数
// int ret = FindNum(arr, k, &x, &y);
// if (ret == 1)
// {
// printf("找到了\n");
// printf("下标是:%d %d\n", x, y);
// }
// else
// {
// printf("找不到\n");
// }
// return 0;
//}